Magento - 按属性过滤

时间:2011-11-09 17:07:18

标签: magento attributes

我为一个产品定义了一个属性,该产品将包含逗号分隔的值列表。这背后的想法是,我可以将此产品与其他产品交叉引用。

伪代码看起来有点像这样:     查找属性“cross_ref”类似于'%1234%'

的所有产品

cross_ref属性将包含“1234,5678,abcd”等内容 我尝试了以下但是它没有返回任何产品:

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*');
$collection->addFieldToFilter('cross_ref',array('like'=> '1234'));
//$collection->addAttributeToFilter('cross_ref',array('like'=> '1234')); // This didn't work either
foreach ($collection as $product) {
        var_dump($product->getData());
}

此代码不会返回任何内容。

我是如何实现这一目标的?

谢谢

1 个答案:

答案 0 :(得分:3)

您似乎忘记了%符号以匹配字符串的子部分:'like' => '%1234%'

但是,如果您不希望1234与12345匹配,您可能希望在查询中包含逗号,并且在字符串的开头或结尾也不允许使用逗号:

$collection->addFieldToFilter('cross_ref', array(
    array('like'=> '%,1234,%'),
    array('like'=> '1234,%'),
    array('like'=> '%,1234'),
));