where – název sloupve jako proměnná

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

Zdravím!
Lze do metody where zadat jméno sloupce jako proměnnou? Tedy něco jako where(‚? = 3‘, $name), které by pro $name=‚col1‘ vytvořilo sql WHERE (col1 = 3)?

GEpic
Člen | 566
+
+1
-

->where($column, $value)

Editoval GEpic (26. 9. 2016 4:21)

aum
Člen | 12
+
0
-

Díky. A jak v případě složeného vyrazu? Tedy např. (column1>value1 AND column2=value2) OR column3<=value3. Je to někde k nalezení v dokumentaci?

CZechBoY
Člen | 3608
+
+1
-

A co ti nejde na tom tvým zápisu?

$db->where("{$column} = ? OR {$column2} > ?", 1, 2);
GEpic
Člen | 566
+
0
-

aum napsal(a):

Díky. A jak v případě složeného vyrazu? Tedy např. (column1>value1 AND column2=value2) OR column3<=value3. Je to někde k nalezení v dokumentaci?

Prostě do prvního argumentu můžeš zapsat cokoliv potřebuješ, a je jedno jestli to tam nacvakáš růčo, nebo si to někde složíš a předáš proměnnou. Na tom nezáleží.

David Matějka
Moderator | 6445
+
+3
-

pozor, pokud je ten nazev sloupce napriklad z uzivatelskeho vstupu, je nutne ho spravne osetrit. myslim, ze to jde pres modifikator ?name, takze to, co pise @CZechBoY by melo vypadat asi takhle:

->where('?name = ? OR ?name > ?', $column1, 1, $column2, 2)
aum
Člen | 12
+
0
-

Se složenými závorkami to funguje. Děkuji všem. Je to někde zdokumentované?

aum
Člen | 12
+
0
-

Měl jsem na mysli dokumentaci Nette. Proč tam mají být složené závorky, jak Nette převádí svůj zápis na SQL dotaz atd.

CZechBoY
Člen | 3608
+
0
-

Složený závorky jsou klasická konstrukce php.