Подтвердить что ты не робот

AddAttributeToFilter и условие OR в коллекции Magento

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

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

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

Как

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

ИЛИ

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

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

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

4b9b3361

Ответ 1

да, это так.

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

Ответ 2

Если вы хотите использовать то же самое для функции 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']]
)

Ответ 4

Для addAttributeToFilter:

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