Всем привет!
Подскажите как через query builder сделать такой запрос:
select *
from attribute
WHERE JSON_CONTAINS(types, '"1"');
types - json поле со значением - ["1", "2"]
Построение запроса через query builder
Re: Построение запроса через query builder
видел этот вопрос, но так у меня не работает, как через where это сделать ?
Re: Построение запроса через query builder
А почему не работает, как там показывают?
По сути, он найдет в таблице в поле types значение "1" и выдаст строки, где оно есть.
В примере поле [1, 2], у вас ["1", "2"]. Что в свою очередь разные вещи, т.к. есть ковычки двойные
Код: Выделить всё
$res = Table::find()->where(['like','types','"1"'])->all();
Re: Построение запроса через query builder
нуу неееет, нужно через JSON_CONTAINS
пока так только:
есть же более изящный вариант?)
пока так только:
Код: Выделить всё
$typeId = '\'"'.$this->type_id.'"\'';
return (new Query())
->from('attribute')
->where('JSON_CONTAINS(types, '.$typeId.')')
->all();