2013-02-12 1 views
0

Я пытаюсь выполнить поиск по magento, связанный с 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)) 
        ); 

где $ search - это строка, в которой я сохраняю ключевое слово. Предположим теперь, что my_attribute_id - это атрибут продукта multi-select, который имеет один параметр с именем «Red Bull» ... если я ищу после точной строки «красный бык», он работает, но я бы хотел работать, если бы я искал только после «красного» или «быка». Есть ли способ получить идентификатор опции для атрибута, даже если строка поиска неполна? Потому что проблема здесь:

Mage::getResourceModel('catalog/product') 
         ->getAttribute('my_attribute_id') 
         ->getSource() 
         ->getOptionId($searched)) 

этот код возвращает идентификатор опции атрибута, только если я искать его entirely.Probably модель делает что-то запрос, как этот

"select...where value='$searched'" 

Есть ли способ получить список атрибутов опции ид даже если значение опции не является полным? .. так, чтобы сделать запрос, как этот

"select...where value like '%$searched%'" 

Или есть лучший способ получить сбор продукта после того, как частичное значение атрибута multi-select, а другое - решение, которое я пытаюсь сделать? Большое спасибо!

ответ

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) 
     ) 
    ); 
+0

спасибо за ответ ... я добавил свои предложения, но не получилось .. я забыл упомянуть в исходное сообщение, что я добавил следующий код : $ productCollection-> addAttributeToSelect (Mage :: getSingleton ('catalog/config') -> getProductAttributes()); В любом случае, я заменил свой код вашим предложением, но все равно ничего .. –

Смежные вопросы