1

Magento 製品コレクションの複数選択属性に対して 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 を持つ製品を見つけることです..

助言がありますか?

4

1 に答える 1

2

わかりましたので、複数選択属性オプションに対して like を実行する方法を思いつきました...

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

これはかなりうまくいくようです!他の誰かがよりうまくいくかもしれない解決策を持っているなら、私に知らせてください。

于 2013-10-19T20:33:08.893 に答える