pouzit array vo where klauzule

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

Dobry den, da sa v Nette vytvorit nieco taketo(velmi by som potreboval nejakym sposobom to takto pouzit) :

<?php
   ... ->where('id = ? AND id = ? AND id = ?', array($id1,$id2,$id3));
?>

? hlavne mi ide o ten array, ci sa tam da definovat ako druhy parameter, alebo to musi byt iba zoznam premennych?

David Matějka
Moderator | 6445
+
+1
-

Jednotlive parametry do sql se museji predavat jako dalsi parametry te funkce. Pri nejakem dynamickem dotazu muzes vyuzit php funkci call_user_func_array

A v tvem pripade, nechtel si tam pouzit spise OR? v takovem pripade je lepsi pouzit sql operator IN

->where('id IN ?', array(1, 2, 3))
Matej123
Člen | 150
+
0
-

praveze IN vybera cez OR, co ja nechcem. Robim na takom priklade: mam v appke zoznam potravin(na ktore moze pouzivatel klikat), z nich si vyberie niektore(moze jednu, dve, ale aj desat) a system mu vyhodi mozne recepty, ktore sa daju z tychto surovin pripravit, teda napr. ak vyberie mlieko vyhodi mu palacinky, ale ak vyberie mlieko+spagety tak palacinky mu neukaze :) v databaze to mam nejako takto:

food_id recipe_id
1 1
4 1
6 1

kde recipe_id=1 to su palacinky a food_id su suroviny potrebne pre pripravu palaciniek.

David Matějka napsal(a):

Jednotlive parametry do sql se museji predavat jako dalsi parametry te funkce. Pri nejakem dynamickem dotazu muzes vyuzit php funkci call_user_func_array

A v tvem pripade, nechtel si tam pouzit spise OR? v takovem pripade je lepsi pouzit sql operator IN

->where('id IN ?', array(1, 2, 3))
F.Vesely
Člen | 369
+
0
-

V tomhle pripade ti ale jeden WHERE s nekolika AND nepomuze. WHERE se vztahuje na jeden radek, takze ty bys chtel radek, kde je food_id = 1 AND food_id = 2, coz neni zadny. Ty potrebujes nejaky prunik.

Matej123
Člen | 150
+
0
-

nenapada ta, ako by som to mohol implementovat? lebo uz sedim dost dlho nad tym, ale nic ma nenapada .

F.Vesely napsal(a):

V tomhle pripade ti ale jeden WHERE s nekolika AND nepomuze. WHERE se vztahuje na jeden radek, takze ty bys chtel radek, kde je food_id = 1 AND food_id = 2, coz neni zadny. Ty potrebujes nejaky prunik.

David Matějka
Moderator | 6445
+
+1
-

Zkusil bych:

->table('recipe')->where(':food_recipe IN ?', $foods)->group('recipe.id')->having('COUNT(*) = ?', count($foods));