Nette\Database\Selection – where a operátor OR

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

Mám aplikaci, ve které potřebuji vyhledat daný výraz ve dvou sloupcích (resp vyhledávání výskytu výrazu v celé tabulce) a rád bych to zrealizoval pomocí Selection->where. Dá se zapsat něco co by vystoihovalo tenhle smysl? Selection->where(„sloupec1“ ⇒ „hodnota“ OR „sloupec2“ ⇒ „hodnota“)->…

Elijen
Člen | 171
+
+2
-

Toto je pokud vim jediny zpusob:

->where("sloupec1 = ? OR sloupec2 = ?", $hodnota1, $hodnota2)

Editoval Elijen (26. 4. 2012 23:34)

stemba
Člen | 20
+
0
-

Skvělé, díky moc.. funguje to :-)

ZeeZ
Člen | 1
+
0
-

Zdravim,
nedari se mi do dotazu dostat podminku OR:
(mam tabulku entity(id,…,private,…), tabulku user(id,…) a mezi nimi tabulku permission(entity_id, user_id, type)

$out = $this->database->table(‚entity‘)->where($where)->where(„id“, $this->database->table(‚permission‘)->select(‚entity_id‘)->where(‚user_id‘,$userIdentity->id));

Takze zjistuju, jestli id je v tabulce permission. Ovsem v tabulce entity mam sloupec (redundance), ktery mi urcuje, jestli je verejna (private = 0) nebo podle obsahu tabulky permission (private = 1). Tudiz bych ten dotaz potreboval opravit na (entity.private = 0 OR entity.id in (Select entity_id from permission where user_id = $userId)).
Poradite nekdo prosim ?

motorcb
Člen | 551
+
0
-

A jak bych to udělal kdybych měl hodnoty v poli?

$array = array(1, 2, 3, 4, 5);

...->where("sloupec1 = ? OR sloupec1 = ? OR sloupec1 = ?  OR ...", $array[0], $array[1], $array[2] ... )

S tím, že nevím jak bude pole dlouhé ale vždy v něm bude alespoň 1 prvek.

Díky za rady

ViPEr*CZ*
Člen | 813
+
+1
-

Píšu z hlavy, ale mělo by fungovat:

where("sloupec1 = ? OR sloupec1 = ? OR sloupec1 = ?  OR ...", $array );