私はここ数時間これにこだわっています。で数行をハックして動作させました/lib/Varien/Data/Collection/Db.php
が、適切なソリューションを使用して、コアをそのままにしておきたいと思います。
必要なのは、コレクションを取得して、2 つ以上のフィールドでフィルター処理することだけです。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 (エンタープライズ) を実行しています。ありがとう!