database query a nasledne pouzite where

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MKI-Miro
Člen | 281
+
0
-

Ahojte

v repository mam

function getPaidMalls()
{
	return $this->database->query("
            SELECT m.id AS id, m.name AS name, m.company_id AS company_id,
                   m.latitude AS latitude, m.longitude AS longitude, m.enabled AS enabled,
                   o.paid AS paid, o.date_paid AS date_paid
            FROM mall m
            JOIN order_item oi ON oi.mall_id = m.id
            JOIN `order` o ON o.id = oi.order_id
            WHERE o.paid = 1
            ");

nasledne v presenteri by som chcelspravit nieco take

	$this->mallRepository->getPaidMalls()->where(...)

kedze query vracia ResultSet tak podmienka Where uz pise chybu

ako je mozne napisat vlastny sql select a nasledne este moct pouzit v presenteri ->where ?

vdaka

Editoval MKI-Miro (12. 6. 2014 11:02)

MartinitCZ
Člen | 580
+
0
-

Nepoužívej $this->databse->query(...), ale použij $this->database->select('...')
Nicméně budeš mít problém. Používáš „rezervované názvy“ jako order v názvech sloupců, tabulek!! To opravdu nedělej, jsou z toho jen problémy.

Něco jako:

$this->database->select('*')->from('mall')->where('order_item.order.paid = ?', 1);

Editoval martinit (12. 6. 2014 11:20)

Jan Tvrdík
Nette guru | 2595
+
0
-

Nazvat sloupec order ničemu nevadí, akorát ho musíš správně escapovat, což bys stejně měl dělat u všech sloupců.

MKI-Miro
Člen | 281
+
0
-
$this->database->select('*')->from('mall')->where('order_item.order.paid = ?', 1);

moze toto fungovat bez joinov ?

MartinitCZ
Člen | 580
+
0
-

Ano bude, přečti si doc . Nette Database něco jako ->leftJoin nemá. Od toho je tu magie pomocí teček a dvojteček.