2011-11-09 118 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