2014-01-15 5 views
0

Я пытаюсь отфильтровать коллекцию по имени, которое может начинаться с букв a, b, c и d.Добавить атрибут для фильтра AND condition magento

я попытался следующие коды

1) addFieldToFilter ('m_name', массив ('как' => 'а%'), 'm_name', массив ('как' => «Ь% '),' m_name ', array (' like '=>' c% '))

2) addFieldToFilter (массив (' m_name ',' like '=>' a% '), array (' m_name», 'как' => 'B%'), массив ('m_name', 'как' => 'C%')))

Но оба они отображаются в коллекцию имен, начиная с алфавитом «а» (не b, c, и d). Пожалуйста, помогите мне получить правильную коллекцию.

Я также попробовал этот код $ коллекции = Mage :: getModel ('производители/производители') -> getCollection() -> addStoreFilter (Mage :: приложение() -> getStore (истина) -> GetId()) -> addFieldToFilter ('m_name', array ('like' => 'a'. '%')), Array ('like' => 'b'. '%'), Array (' например '=>' c '.'% ')) -> addFieldToSelect (' * ') -> load();

Но все-таки проявляет коллекцию имен, начиная с алфавита «а» только

ответ

0

Вы не ищете AND, но OR.

Если вы AND a LIKE a% и a LIKE b%, вы всегда получите пустой результат. Это потому, что одно и то же значение атрибута может начинаться только с a OR b, но никогда с a AND b.

Чтобы определить OR фильтр для конкретного атрибута вы можете использовать один addFieldToFilter() вызов и передать массив массивов к нему:

$collection = Mage::getModel('catalog/product')->getCollection() 
    ->addFieldToFilter(
     'm_name', 
     array(
      array(
       'like' => 'a%' 
      ), 
      array(
       'like' => 'b%' 
      ) 
     ) 
    ); 
+0

Да, это была моя ошибка. Это или условие –

0

Здравствуйте проверить код, приведенный ниже, может быть поможет вам

$collection = Mage::getModel('catalog/product')->getCollection() 
      ->addAttributeToSort('name', 'asc') 
      ->addFieldToFilter('name',array(array('like'=>'a%'), array('like'=>'b%'), array('like'=>'c%'), array('like'=>'d%'))) 
       ->addAttributeToSelect('*'); 
foreach ($collection as $product) { 
     echo $product->getName() . "<br />"; 
} 
+0

ошибка будет встречающийся всякий раз, когда я добавить (или addAttributeToSort addAttributeToSelect) ... ..Error says :: Call to undefined method myPackageName_myModuleName_Model_Mysql4_myFolderName_Collection :: addAttributeToSort() –

+0

замените этот код только в вашей вышеуказанной коллекции -> addFieldToFilter ('m_name', array ('like' => 'a%'), array ('like' => 'b%'), array ('like' => 'c%'), array ('like' => 'd%'))) – MagikVishal

+0

ok Ошибка благодарности устранена. Я не подавил закрывающий кронштейн правильно.my-код был похож this: -> addFieldToFilter ('m_name', array (array ('like' => 'a%')), array ('like' => 'b%'), array ('like' => 'c%')) –

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