Построение запроса через query builder

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
dds
Сообщения: 102
Зарегистрирован: 2013.11.18, 10:48

Построение запроса через query builder

Сообщение dds »

Всем привет!
Подскажите как через query builder сделать такой запрос:

select *
from attribute
WHERE JSON_CONTAINS(types, '"1"');

types - json поле со значением - ["1", "2"]
dds
Сообщения: 102
Зарегистрирован: 2013.11.18, 10:48

Re: Построение запроса через query builder

Сообщение dds »

видел этот вопрос, но так у меня не работает, как через where это сделать ?
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Построение запроса через query builder

Сообщение unknownby »

dds писал(а): 2020.09.21, 16:31 видел этот вопрос, но так у меня не работает, как через where это сделать ?
А почему не работает, как там показывают?

По сути, он найдет в таблице в поле types значение "1" и выдаст строки, где оно есть.
В примере поле [1, 2], у вас ["1", "2"]. Что в свою очередь разные вещи, т.к. есть ковычки двойные :)

Код: Выделить всё

$res = Table::find()->where(['like','types','"1"'])->all();
dds
Сообщения: 102
Зарегистрирован: 2013.11.18, 10:48

Re: Построение запроса через query builder

Сообщение dds »

нуу неееет, нужно через JSON_CONTAINS :)

пока так только:

Код: Выделить всё

$typeId = '\'"'.$this->type_id.'"\'';
return (new Query())
            ->from('attribute')
            ->where('JSON_CONTAINS(types, '.$typeId.')')
            ->all();
есть же более изящный вариант?)
Ответить