Я застрял на этом в течение последних нескольких часов. Я заставил его работать, взломав несколько строк в /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 (предприятие). Спасибо!