web-dev-qa-db-ja.com

addAttributeToFilterおよびOR Magentoのコレクションの条件

異なる属性のいくつかの基準に基づいて製品を選択したいと思います。

ユーザー$collection->addAttributeToFilter('someattribute', array('like' => '%'));の使い方を知っています

しかし、[〜#〜] or [〜#〜]条件にいくつかの属性を使用したいと思います。

お気に入り:

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

OR

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

'someattribute' [〜#〜] or [〜#〜] 'otherattribute'が 'value'に設定されている製品を取得するには

出来ますか?

26
ÉricP

はい、そうです。

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

EAVを使用していないコレクションのaddFieldToFilter関数に同じものを使用する場合は、次の形式を使用できます。

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

「OR」を達成するために検討すべきもう1つのことは、次のとおりです。

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

AddAttributeToFilterの場合:

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