是否可以对magento产品系列上的multiselect属性执行LIKE操作?
例如下面我在集合中查找完全匹配:
$_productCollection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('makemodel',
array('finset' => Mage::getResourceModel('catalog/product')
->getAttribute('makemodel')
->getSource()
->getOptionId('@Massey Ferguson@#350#')
)
)
->addAttributeToSelect('*');
if($_productCollection){
foreach($_productCollection as $product){
var_dump($product->getData());
}
}
我希望能够获得包含@Massey Ferguson @的属性选项的选项ID,然后找到所有带有返回选项ID的产品..
有什么建议吗?
答案 0 :(得分:2)
好的,所以我提出了一种方法来对抗多选属性选项...
$make = $make.'%';
/** @var $attribute Mage_Eav_Model_Entity_Attribute */
$valuesCollection = Mage::getResourceModel('eav/entity_attribute_option_collection')
->setAttributeFilter($attribute->getId())
->addFieldToFilter('value', array ('like' => $make))
->addFieldToSelect('option_id')
->setStoreFilter(0, false);
$set = array();
foreach($valuesCollection as $option){
$set[] = $option->getData('option_id');
}
$_productCollection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('makemodel',
array('in' => $set
)
)
->addAttributeToSelect('*');
这似乎工作得很好!如果其他人有一个可能更好的解决方案,请告诉我。