如何在Product Collection中组合SQL OR条件? Magento的?

时间:2016-04-14 11:11:33

标签: mysql magento magento-1.9

我希望我的搜索结果来自name匹配 description匹配。

$custom_collection = Mage::getModel('catalog/product')->getCollection()
    ->addAttributeToSelect('*')
    ->addAttributeToSelect('type')
    ->addAttributeToSelect('price')
    ->addAttributeToFilter(array('attribute' => 'name', 'like' => '%' . $queryText . '%'))
    ->addAttributeToFilter(array('attribute' => 'description', 'like' => '%' . $queryText . '%'))
    ->addFieldToFilter('attribute_set_id', array(11, 4));

这是我需要合并的两个特定行

->addAttributeToFilter(array('attribute' => 'name', 'like' => '%' . $queryText . '%'))
->addAttributeToFilter(array('attribute' => 'description', 'like' => '%' . $queryText . '%'))

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码进行OR条件。

 $custom_collection->addAttributeToFilter(
        array(
            array('attribute'=> 'name','like' => '%' . $queryText . '%'),
            array('attribute'=> 'description','like' => '%' . $queryText . '%')
        )
    );

答案 1 :(得分:0)

尝试以下方法:

$collection->addAttributeToFilter(
array(
    array('attribute'=> 'name','like' => ''%' . $queryText . '%''),
    array('attribute'=> 'description','like' => ''%' . $queryText . '%''),
    )
);

这将输出格式为

的WHERE子句
 WHERE ((name LIKE ''%' . $queryText . '%'') OR (description LIKE ''%' . $queryText . '%'')