Magento集合中的addAttributeToFilter和OR条件

时间:2011-03-14 16:08:16

标签: php collections magento attributes

我想根据不同属性的几个标准选择产品。

我知道如何使用$collection->addAttributeToFilter('someattribute', array('like' => '%'));

但是我想为 OR 条件使用几个属性。

像:

$collection->addAttributeToFilter('someattribute', array('like' => 'value'));`

OR

$collection->addAttributeToFilter('otherattribute', array('like' => 'value'));`

要获得“某些属性”''分配'设置为'价值'的产品

有可能吗?

4 个答案:

答案 0 :(得分:57)

是的。

$collection->addAttributeToFilter(
    array(
        array('attribute' => 'someattribute', 'like' => 'value'),
        array('attribute' => 'otherattribute', 'like' => 'value'),
        array('attribute' => 'anotherattribute', 'like' => 'value'),
    )
);

答案 1 :(得分:11)

如果您希望对不使用EAV的集合使用相同的addFieldToFilter函数,则可以使用以下格式:

$collection->addFieldToFilter(
array(
   'someattribute',
   'otherattribute',
   'anotherattribute',
),
array(
    array('like' => 'value'),
    array('like' => 'value'),
    array('like' => 'value'),
));

答案 2 :(得分:4)

要实现'OR'的另一个目的是:

->addFieldToFilter(
     'type_id',
     ['in' => ['simple', 'configurable']]
)

答案 3 :(得分:2)

对于addAttributeToFilter:

$collections = Mage::getModel('sales/order')->getCollection()
             ->addAttributeToFilter('increment_id', array('in' => $sellerIncrementIds))
             ->addAttributeToFilter('status', ['in' => ['pending','pending_seller_confirmation']]);