Magento - фильтр по атрибуту - PullRequest
1 голос
/ 09 ноября 2011

У меня есть атрибут, определенный для продукта, который будет содержать список значений через запятую. Идея заключается в том, чтобы я мог сопоставить этот продукт с другим продуктом.

псевдокод будет выглядеть примерно так: Найти все продукты, где атрибут "cross_ref" похож на "% 1234%"

Атрибут cross_ref будет содержать что-то вроде «1234,5678, abcd» и т. Д. Я пробовал следующее, но он не возвращает никаких продуктов:

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*');
$collection->addFieldToFilter('cross_ref',array('like'=> '1234'));
//$collection->addAttributeToFilter('cross_ref',array('like'=> '1234')); // This didn't work either
foreach ($collection as $product) {
        var_dump($product->getData());
}

Этот код ничего не возвращает, хотя.

Есть идеи, как мне этого добиться?

Спасибо

1 Ответ

3 голосов
/ 09 ноября 2011

Похоже, вы забыли знак% для соответствия части строки: 'like' => '%1234%'.

Однако, если вы не хотите, чтобы 1234 совпадал с 12345, вы можете включить запятую в запрос, а также не использовать запятые в начале или конце строки:

$collection->addFieldToFilter('cross_ref', array(
    array('like'=> '%,1234,%'),
    array('like'=> '1234,%'),
    array('like'=> '%,1234'),
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...