tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

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!