在Magento产品属性multiselect上执行LIKE

时间:2013-10-19 13:20:50

标签: php magento zend-framework

是否可以对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的产品..

有什么建议吗?

1 个答案:

答案 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('*');

这似乎工作得很好!如果其他人有一个可能更好的解决方案,请告诉我。