Приветству.
Есть SQL-запрос к БД:
Код: Выделить всё
SELECT *
FROM "myCustomView"
WHERE (
(
code = 'ATTR_GROUP'
AND (
"value" = 'Мед'
OR "value" = 'Груша'
)
)
OR (
code = 'ATTR_SEX'
AND "value" = 'мужской'
OR "value" = 'унисекс'
)
)
Мне нужно получить аналог на AcriveRecord. На выходе имеем некоторый массив из которого нужно получить условия для будущего запроса:
Код: Выделить всё
[
['code' => 'ATTR_SEX'],
['code' => 'ATTR_GROUP],'
]
Этот массив с помощью не хитрого преобразования
Код: Выделить всё
$viewQuery->andFilterWhere(
array_merge(['OR'], $theArray)
);
становится SQL-запросом
Код: Выделить всё
SELECT *
FROM "myCustomView"
WHERE (
code = 'ATTR_GROUP'
OR code = 'ATTR_SEX'
)
Теперь я думаю как задать вложенные условие для value. К сожалению, моя фантазия заканчивается на идеи работать с текстом. Но, хотелось бы верить, что мы имеем "мощный инструмент с высокоуровневой абстракцией, который позволяет забыть про SQL". В общем, подкиньте идею как таке запросы формировать по умному. Входные данные - в любом виде, главное получить AR-объект, который возвращает требуемый запрос.