Мне необходимо отфильтровать коллекцию товаров по нескольким вложенным критериям ИЛИ и AND.Я пытался сделать это, используя чистый SQL-оператор, и я думаю, что смогу это сделать, но, поскольку я заканчиваю работу на сегодня, я подумал, что, возможно, кто-то здесь найдет лучшее решение, и я проснусь завтра и получу ответ: P.
Моя проблема в том, что метод addAttributeToFilter (), предоставляемый классом Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Collection, позволяет только два раза вкладывать предложение where, поэтому я могу иметь
(cond1 OR cond2 OR cond3) AND (cond4 OR cond5) AND cond6
, но не
cond1 AND (cond2 OR(cond3 AND cond4))
1008 * (или я не знаю, как это сделать).
Как я уже говорил, я начал играть с чистым SQL-оператором, чтобы получить идентификаторы продуктов, поэтому я могу просто добавить атрибутAttributeToFilter с условием «in».Но Magento DB такой беспорядок!Я имею в виду, что это нормально, пока вы не проследите каждое отношение через таблицы googol: P.
Я думал, что у объектов коллекции Zend могут быть некоторые функции, которые мне нужны, но я не слишком знаком с Zend (мой плохой).
Итак, кто-нибудь спасет меня от написания 300-строчного SQL-запроса?Я всегда хотел сделать это, но я думаю, что могу немного отложить это:).
Cheers, Maćko
РЕДАКТИРОВАТЬ: я должен получить информацию о продуктах, и в этом объединенном состоянии будетнекоторые пользовательские опции из стороннего модуля, такие как: целевой возраст и т. д. Я думаю, что мне придется делать это на стороне PHP, но мне это не очень нравится - на данный момент есть 37 продуктов, которые могут быть отфильтрованы изначально, но чтоесли было бы около 1000 товаров, соответствующих этим начальным критериям?