2011-11-09 97 views
1

我为产品定义了一个属性,该属性将包含逗号分隔的值列表。这背后的想法是,我可以交叉参考这个产品与另一个产品。Magento - 按属性筛选

伪代码看起来有点像这样: 找到所有产品在属性 “cross_ref” 是LIKE '%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()); 
} 

这段代码虽然没有返回任何东西。

任何想法,我可以如何实现这一点?

谢谢

回答

3

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

但是,如果你不想做1234匹配12345,您可能要包括在查询中的逗号,也允许在字符串的开头或结尾没有逗号:

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

卫生署!感谢您的发现。所有现在都按预期工作。谢谢 – sulman