Magento addFieldToFilter: Two fields, match as OR, not AND

后端 未结 10 1225
孤街浪徒
孤街浪徒 2020-12-04 09:42

I\'ve been stuck on this for the last few hours. I got it working by hacking a few lines in /lib/Varien/Data/Collection/Db.php, but I\'d rather use the proper s

10条回答
  •  攒了一身酷
    2020-12-04 10:35

    OR conditions can be generated like this:

    $collection->addFieldToFilter(
        array('field_1', 'field_2', 'field_3'), // columns
        array( // conditions
            array( // conditions for field_1
                array('in' => array('text_1', 'text_2', 'text_3')),
                array('like' => '%text')
            ),
            array('eq' => 'exact'), // condition for field 2
            array('in' => array('val_1', 'val_2')) // condition for field 3
        )
    );
    

    This will generate an SQL WHERE condition something like:

    ... WHERE (
             (field_1 IN ('text_1', 'text_2', 'text_3') OR field_1 LIKE '%text')
          OR (field_2 = 'exact')
          OR (field_3 IN ('val_1', 'val_2'))
        )
    

    Each nested array() generates another set of parentheses for an OR condition.

提交回复
热议问题