Я должен создать sql-запрос из динамически созданной формы. Пользователь будет выбирать поля таблицы и логические условия И/ИЛИ между ними. Итак, в конце у меня должен быть такой SQL-запрос:
WHERE (
name LIKE "%foo%"
OR name LIKE "%bar%"
)
AND (
ad = "BP"
OR ad = "SV"
)
Я старался
$query
->where(['Contacts.name LIKE' => '%foo%'])
->orWhere(['Contacts.cname LIKE' => '%bar%'])
->andWhere(function($exp){
return $exp->or_(
['Contacts.ad' => 'BP'],
['Contacts.ad' => 'SV']
);
})
);
Что явно не хорошо, так как я переопределяю Contacts.ad. Я пробовал разные способы, но мне не удалось получить правильную скобку.
Реальная проблема более сложная, так как она может содержать больше полей, а не только эти два (название и объявление).