我正在尝试进行与ajax相关的magento搜索,我无法正确地将多选类型的产品属性添加到产品集合中, 例如:
$productModel = Mage::getModel('catalog/product'); //getting product model
$productCollection = $productModel->getCollection();
$productCollection->addAttributeToSelect(
Mage::getSingleton('catalog/config')
->getProductAttributes()
);
$productCollection->addAttributeToFilter(
array(
array('attribute'=>'my_attribute_id',
'finset' => Mage::getResourceModel('catalog/product')
->getAttribute('my_attribute_id')
->getSource()
->getOptionId($searched))
);
其中$ searching是我保存关键字的字符串。现在,让我们假设my_attribute_id是一个多选产品属性,其中有一个选项命名为“Red Bull”...如果我搜索完全字符串“red bull”后,它可以工作,但是如果我搜索我想工作只有在“红色”或“公牛”之后。 有没有办法获取属性的选项ID,即使搜索字符串不完整?因为问题在这里:
Mage::getResourceModel('catalog/product')
->getAttribute('my_attribute_id')
->getSource()
->getOptionId($searched))
这个代码只有在我完全搜索它时才会返回属性选项的id。可能模型会执行类似这样的查询
"select...where value='$searched'"
即使选项的值不完整,有没有办法获取属性选项id的列表?所以要做这样的查询
"select...where value like '%$searched%'"
或者有更好的方法在多选属性部分值之后检索产品集合,除了我正在尝试的解决方案之外? 非常感谢!
答案 0 :(得分:0)
请试试这个..
$collection = Mage::getModel('catalog/product')->getCollection();
->addAttributeToSelect('*')
->addFieldToFilter(
'my_attribute_id',
array(
'like' => Mage::getResourceModel('catalog/product')
->getAttribute('my_attribute_id')
->getSource()
->getOptionId($searched)
)
);