addAttributeToFilter и условие OR в коллекции Magento - PullRequest
26 голосов
/ 14 марта 2011

Я хотел бы выбрать продукты в зависимости от нескольких критериев из разных атрибутов.

Я знаю, как использовать $collection->addAttributeToFilter('someattribute', array('like' => '%'));

Но я бы хотел использовать несколько атрибутов для ИЛИ условие.

Как:

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

ИЛИ

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

Чтобы получить продукты, которые либо 'someattribute' ИЛИ 'otherattribute 'установлено в' value '

Возможно ли это?

Ответы [ 4 ]

57 голосов
/ 14 марта 2011

Да, это так.

$collection->addAttributeToFilter(
    array(
        array('attribute' => 'someattribute', 'like' => 'value'),
        array('attribute' => 'otherattribute', 'like' => 'value'),
        array('attribute' => 'anotherattribute', 'like' => 'value'),
    )
);
11 голосов
/ 05 января 2015

Если вы хотите использовать то же самое для функции addFieldToFilter для коллекций, которые не используют EAV, вы можете использовать следующий формат:

$collection->addFieldToFilter(
array(
   'someattribute',
   'otherattribute',
   'anotherattribute',
),
array(
    array('like' => 'value'),
    array('like' => 'value'),
    array('like' => 'value'),
));
4 голосов
/ 03 мая 2016

Еще одна вещь, на которую нужно обратить внимание для достижения «ИЛИ»:

->addFieldToFilter(
     'type_id',
     ['in' => ['simple', 'configurable']]
)
2 голосов
/ 16 октября 2017

Для addAttributeToFilter:

$collections = Mage::getModel('sales/order')->getCollection()
             ->addAttributeToFilter('increment_id', array('in' => $sellerIncrementIds))
             ->addAttributeToFilter('status', ['in' => ['pending','pending_seller_confirmation']]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...