Skip to content

Фильтры коллекций Magento

Очень часто в CMS Magento (Мадженто) требуется отфильтровать коллекцию продуктов по свойствам(атрибутам).

В Magento есть метод(функция) addFieldToFilter() которая помогает фильтровать коллекции продуктов.

Пример простого фильтра для коллекции продуктов, выбрать из коллекции продуктов Magento, продукт у которого атрибут sku равен magentoSkuuu

Mage::getModel('catalog/product')
    ->getCollection()
    ->addFieldToFilter('sku',array('eq'=>'magentoSkuuu'))
    ->getSelect();

фильтр устанавливается методом addFieldToFilter(‘sku’,array(‘eq’=>’magentoSkuuu’))

где sku атрибут по которому необходимо фильтровать, второй параметр PHP массив в котором есть ключ — тип фильтрации и значение ключа «magentoSkuuu» параметр для фильтрации.

Ниже пример фильтров для коллекций продуктов Magento, а также эквивалент в SQL

array("eq"=>'magentoSkuuu')
WHERE (e.sku = 'magentoSkuuu')

array("neq"=>'magentoSkuuu')
WHERE (e.sku != 'magentoSkuuu')

array("like"=>'magentoSkuuu')
WHERE (e.sku like 'magentoSkuuu')

array("nlike"=>'magentoSkuuu')
WHERE (e.sku not like 'magentoSkuuu')

array("is"=>'magentoSkuuu')
WHERE (e.sku is 'magentoSkuuu')

array("in"=>array('magentoSkuuu'))
WHERE (e.sku in ('magentoSkuuu'))

array("nin"=>array('magentoSkuuu'))
WHERE (e.sku not in ('magentoSkuuu'))

array("notnull"=>'magentoSkuuu')
WHERE (e.sku is NOT NULL)

array("null"=>'magentoSkuuu')
WHERE (e.sku is NULL)

array("gt"=>'magentoSkuuu')
WHERE (e.sku > 'magentoSkuuu')

array("lt"=>'magentoSkuuu')
WHERE (e.sku < 'magentoSkuuu')

array("gteq"=>'magentoSkuuu')
WHERE (e.sku >= 'magentoSkuuu')

array("moreq"=>'magentoSkuuu')
WHERE (e.sku >= 'magentoSkuuu')

array("lteq"=>'magentoSkuuu')
WHERE (e.sku <= 'magentoSkuuu')

array("finset"=>array('magentoSkuuu'))
WHERE (find_in_set('magentoSkuuu',e.sku))

array('from'=>'10','to'=>'20')
WHERE e.sku >= '10' and e.sku <= '20'

Взято с http://blog.decryptweb.com/filters-query-magento/

Magento 1.*