Magento addFieldToFilter: два поля, совпадают как OR, а не AND

Я застрял на этом в течение последних нескольких часов. Я получил это работает, взломав несколько строк в/lib/Varien/Data/Collection/Db.php, но я бы предпочел использовать правильное решение и оставить свое ядро ​​нетронутым.

Все, что мне нужно сделать, это получить коллекцию и отфильтровать ее по двум или более полям. Сказать,customer_firstname а такжеremote_ip, Вот мой (нефункциональный без взломаDb.php) код:

$collection = Mage::getModel('sales/order')->getCollection()->
addAttributeToSelect("*")->
addFieldToFilter(array(array('remote_ip', array('eq'=>'127.0.0.1')),
array('customer_firstname', array('eq'=>'gabe'))), array('eq'=>array(1,2,3)));

С запасомDb.phpЯ попробовал это: (образец взят изhttp://magentoexpert.blogspot.com/2009/12/retrieve-products-with-specific.html)

$collection->addFieldToFilter(array(
    array('name'=>'orig_price','eq'=>'Widget A'),
    array('name'=>'orig_price','eq'=>'Widget B'),           
));

Но это дает мне эту ошибку:

Warning: Illegal offset type in isset or empty  in magento/lib/Varien/Data/Collection/Db.php on line 369

Если я оберну это с помощью try / catch, то оно перейдет в _getConditionSql () и выдаст эту ошибку:

Warning: Invalid argument supplied for foreach()  in magento/lib/Varien/Data/Collection/Db.php on line 412

У кого-нибудь есть рабочий, функциональный код для этого? Я использую Magento 1.9 (Enterprise). Спасибо!

Ответы на вопрос(10)

Ваш ответ на вопрос