Jak nastavit prázdnou podmínku při where

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

Zdravím,
mám dotaz v NDB, který kupříkladu vybírá článek podle kategorie.

$this->db->table("article")->where(array("category"=>$category));

Nevím jak to ale udělat, když se rozhodnu že žádnou kategorii nechci vybrat, tedy chci naopak vybrat všechno, vlastně zrušit tu podmínku. Jde nějak udělat aby ta podmínka byla prázdná, netestovala se? Nebo aspoň, aby byla pravdivá vždy, něco jako že $category = ‚*‘, ‚all‘ , ‚is not null‘ nebo cokoliv.

Samozřejmě, že můžu například testovat jestli není $category null a pak změnit ten dotaz, ale to mi příjde zbytečné psaní. U složitějších a často opakovaných dotazů to nechci pořád větvit. :/

Glottis
Člen | 129
+
0
-

->where(1) nejde?

Hafran
Člen | 121
+
0
-

No to by mohlo jít, každopádně v tom dotazu už je natvrdo zadrátovaný

"category" => $category

snažím se to vymyslet abych nemusel ten příkaz nijak měnit, takže když bych $category = 1; tak v podmínce bude

"category" => 1

což samozřejmě nebude fungovat :)

h4kuna
Backer | 740
+
0
-

Podle mě to bez větvení neuděláš.

David Matějka
Moderator | 6445
+
0
-

inline by to slo takto:

$this->db->table("article")->where($category? array("category"=>$category) : array());

ale radsi pouzij vetveni ifem nebo se v tom za chvili ztratis :)

jean_cz
Člen | 12
+
0
-

Normalne pridas do podminky OR 1=1 nebo mi neco unika?