2011-03-14 102 views
24

我希望根据不同属性的多个条件选择产品。Magento收藏夹中的addAttributeToFilter和OR条件

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

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

像:

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

OR

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

要获取的是 'someattribute' OR 'otherattribute' 设置为 '价值'

是否有可能的产品?

回答

54

是的。

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

请注意,此语法对于addFieldToFilter不正确,请参阅http://stackoverflow.com/a/7851884/336905关于该语法 – 2013-09-02 23:32:15

+0

您是否可以不给出最通用的链接,其中人们必须进行搜索并搜索找东西? – ahnbizcad 2017-03-30 18:42:32

+1

感谢注意@ahnbizcad,这篇文章超级老。 Magento已经改变了链接的位置。 – Rito 2017-06-13 12:36:38

8

如果你希望使用addFieldToFilter功能相同的事情对于那些不使用EAV集合,然后你可以使用以下格式:

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

另一件事看,实现“”是:

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

对于addAttributeToFilter:

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