tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

feature request: dibifluent a where(true)

před 10 lety

Honza M.
Člen | 1674

Potřeboval bych pomocí DibiFluentu udělat takovou docela komplikovanou podmínku, jejíž jednotlivé části mohou a nemusí být definované. Napadlo mě to řešit pomocí ->where(true) a volitelné podmínky přidávat jako ->add(...). Pro ilustraci napíšu kód:

$q = $db->select("*")->from("news")->where(true);

if (isset($language)) $q->and("language = %s", $language);

if (!$includeFuture) $q->and("date <= now()");

Problém je v tom, že ->where(true) se přeloží jako where místo nějakého where 1 = 1. Nebo je nějaký lepší způsob, jak zadat takovou podmínku?

před 10 lety

David Grudl
Nette Core | 6806

Že by

dibi::select("*")->from("news")->where('1=1');

;)

před 10 lety

phx
Člen | 652

Takto by to tamy melo jit.

$q = $db->select("*")->from("news");

if (isset($language)) $q->where("language = %s", $language);

if (!$includeFuture) $q->where("date <= now()");

před 10 lety

Honza M.
Člen | 1674
dibi::select("*")->from("news")->where('1=1');

Ano, tak to mám. Ale where(true) považuju za hezčí, protože mě napadlo dřív :-D

phx

Zkusím.