Query Builder REGEXP

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

Query Builder REGEXP

Сообщение nihaha »

Строю запрос при помощи yii\db\Query. Часть подзапроса должна удовлетворять условиям регулярки. Подзапросов с регуляркой может быть несколько. Выглядит вот так:

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

$query = ....
foreach ($items as $item) {
    $query->andWhere(
        ['REGEXP', 'product_characteristics', $sectionTitle . '":{[^}]+:"' . $item . '"']
    );
}
.....
Запрос работает и получается вида

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

other conditions AND (REGEXP ....) AND (REGEXP....) AND (REGEXP.....)
но логика должна быть другой, с OR между регулярками

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

other conditions AND (REGEXP ....) OR (REGEXP....) OR (REGEXP.....)
Подскажите как его правильно составить. Нужно получить аналог 'or like'.
yan
Сообщения: 942
Зарегистрирован: 2011.03.23, 09:28
Откуда: Уфа

Re: Query Builder REGEXP

Сообщение yan »

$query->andWhere(['OR', ['REGEXP',...], ['REGEXP',...],['REGEXP',...]]) ?
Аватара пользователя
nihaha
Сообщения: 95
Зарегистрирован: 2017.02.12, 13:30

Re: Query Builder REGEXP

Сообщение nihaha »

Если записать вот так:

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

foreach ($items as $item) {
    $query->andWhere(
        ['OR', ['REGEXP', 'product_characteristics', $sectionTitle . '":{[^}]+:"' . $item . '"']]
    );
}
то на выходе все равно получается

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

other conditions AND (REGEXP ....) AND (REGEXP....) AND (REGEXP.....)
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Query Builder REGEXP

Сообщение chesar »

nihaha писал(а): 2018.05.22, 09:54

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

$condition = ['OR'];
foreach ($items as $item) {
    $condition[] = ['REGEXP', 'product_characteristics', $sectionTitle . '":{[^}]+:"' . $item . '"'];
}
$query->andWhere($condition);
Аватара пользователя
nihaha
Сообщения: 95
Зарегистрирован: 2017.02.12, 13:30

Re: Query Builder REGEXP

Сообщение nihaha »

Спасибо, работает.
Закрыто