Я хотел бы отфильтровать коллекцию с помощью сгруппированных предложений. В SQL это будет выглядеть примерно так:
SELECT * FROM `my_table` WHERE col1='x' AND (col2='y' OR (col2='z' and col4='P' and col5='q') OR (col2='x' and col4='r'))
Как я могу «перевести» это для фильтрации коллекции с
-> addFieldToFilter(...)
?
Спасибо!
Если ваш запрос был похож на
SELECT * FROM `my_table` WHERE col1='x' AND (col2='y' OR col2='z' OR col4='P')
Вы можете использовать следующее:
$collection->addFieldToFilter('col1', 'x')->addAttributeToFilter(
array(
array('attribute'=>'col2', 'eq'=>'y'),
array('attribute'=>'col2', 'eq'=>'z'),
array('attribute' => 'col4', 'eq' => 'P')
)
)
Но в вашем случае для такого сложного запроса вы должны использовать Zend_Db_Select
Других решений пока нет …