Как сформировать запрос ActiveQuery YII2?

Мне нужно организовать запрос вида:
SELECT * FROM table WHERE pole=value AND (pole1=value1 OR pole2=value2)

Не совсем понимаю, как это сделать с помощью andFilterWhere и orFilterWhere.
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
talgatbaltasov
@talgatbaltasov
Freelancer
Table::find()->where(['and', 'pole=value', ['or', 'pole1=value1', 'pole2=value2']])->findAll()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Возможный вариант:
$query->where('pole = :value and (pole1 = :value1 or pole2 = :value2)');
$query->params([':value'=>"value", ':value1' => 'value1', ':value2' => 'value2']);

Возможно и такая запись:
$query->params([':value'=>"value", ':value1' => 'value1', ':value2' => 'value2']);
$query->Where(['and', 'value = :value', ['or', 'value1 = :value1', 'value2 = :value2']]);

Operator Format in Query Builder
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы