Oznámení
Dibi 2.0.1 nefunguje WHERE s polem jako argumentem
před 7 lety
- dfx413
- Člen | 9
Zdravím všechny!
Narazil jsem na následující problém:
Mám tento kód:
$query = new \DibiFluent($this->context->dibi);
$query->select('*')
->from('product')
->join('client_action_product')
->on('client_action_product.product_id = product.id')
->where('client_action_product.client_action_id')
->in($actionId);
Podle webu SQL cross queries by měl tento zápis fungovat, ale výstup v podobě SQL je následující:
SELECT *
FROM `product` JOIN `client_action_product` ON client_action_product.product_id = product.id
WHERE `client_action_product`.`client_action_id` IN (1936 1935 5)
Pole se neexpanduje s čárkami mezi jednotlivými elementy. Pokoušel jsem se přepsat dotaz do normální Dibi syntaxe a použít modifikátor %l, %in nebo %ex, vyzkoušel jsem,co se dalo, ale nemohu se dopracovat k žádnému výsledku.
Mohl by někdo poradit, kde je zakopaný pes?
Díky moc.
před 7 lety
- Felix
- Nette Core | 898
Zkus pouzit.
->where('client_action_product.client_action_id IN %in', $actionId);
Editoval Felix (13. 9. 2012 1:38)
před 7 lety
- dfx413
- Člen | 9
Ahoj,
díky za odpověď. Tohle jsem už taky zkoušel, výsledek je opět tento:
WHERE client_action_product.client_action_id IN (1936 1935 5)
Jako argument posílám pole, které vypadá takto:
array(1936,1935,5)
Editoval dfx413 (13. 9. 2012 9:06)
před 7 lety
- Felix
- Nette Core | 898
Tedka jsem si dumpoval dotaz.
$query = dibi::test('SELECT * FROM article WHERE id IN %in', array(1,2,3));
A mam dotaz SELECT * FROM article WHERE id IN (1,2,3);
To same u
$query = dibi::select('*')->from('article')->where('id IN %in', array(1,2,3))->test();
před 7 lety
- dfx413
- Člen | 9
Ach bože, já jsem idiot. Ano, problém byl samozřejmě u mě, musím si
zakázat u toho sedět takhle v noci :-)
Měl jsem totiž v té proměnné array(array(1,2,3)), někde po cestě došlo
k chybě…
Omlouvám se za zbytečné plašení a díky moc!