LIKE в ActiveQuery

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
himiklab
Сообщения: 17
Зарегистрирован: 2014.07.19, 20:13

LIKE в ActiveQuery

Сообщение himiklab »

С помощью \yii\db\ActiveQuery нужно сделать запрос вида WHERE ... AND `field` LIKE '%data'.
Пока в голову пришло такое решение:

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

$query->andWhere(
    "`{$rule['field']}` LIKE :{$rule['field']}",
    [":{$rule['field']}" => "%{$rule['data']}"]
);
Может есть что-то поизящнее?
Аватара пользователя
Faenir
Сообщения: 292
Зарегистрирован: 2010.01.06, 01:46
Откуда: Симферополь

Re: LIKE в ActiveQuery

Сообщение Faenir »

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

$query->andWhere(['like', 'field', '%:data'])->addParams([':data' => $rule['data']]); 
himiklab
Сообщения: 17
Зарегистрирован: 2014.07.19, 20:13

Re: LIKE в ActiveQuery

Сообщение himiklab »

А если запросов много? И field и data постоянно меняется?
В общем есть цикл и в каждой итерации изменяется и параметр и значение.
Аватара пользователя
Faenir
Сообщения: 292
Зарегистрирован: 2010.01.06, 01:46
Откуда: Симферополь

Re: LIKE в ActiveQuery

Сообщение Faenir »

Не понял суть проблемы... Подставляйте переменные.
himiklab
Сообщения: 17
Зарегистрирован: 2014.07.19, 20:13

Re: LIKE в ActiveQuery

Сообщение himiklab »

'%:data' не будет работать, andWhere в таком виде добавляет самостоятельно символы % вначале и в конце, запрос получается WHERE `title` LIKE '%\\%:data%'
Аватара пользователя
Faenir
Сообщения: 292
Зарегистрирован: 2010.01.06, 01:46
Откуда: Симферополь

Re: LIKE в ActiveQuery

Сообщение Faenir »

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

['like', 'field', '%:data', false] 
himiklab
Сообщения: 17
Зарегистрирован: 2014.07.19, 20:13

Re: LIKE в ActiveQuery

Сообщение himiklab »

О, что-то я этот параметр упустил. Спасибо.
Ответить