2011-03-14 104 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']]);