Проблема Magento addAttributeToFilter - PullRequest
0 голосов
/ 13 мая 2011

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

Я создал форму, по которой пользователи могут искать гифлисты (категории) с текстовым полем для каждого атрибута.

Я использую метод getModell..getCollection () с addAttributeToFilter с похожими причинами, но получаю странные результаты.

Вот мой код ..

<?php $list_holder_1 = $_POST['list_holder_1']; ?>
<?php $list_holder_2 = $_POST['list_holder_2']; ?>
<?php $_collection = Mage::getModel('catalog/category')->getCollection();
$_collection->addAttributeToSelect('*');
$_collection->addAttributeToFilter(
            array(
                array('attribute'=>'list_holder_1', 'like'=>'%'.$list_holder_1.'%'),
                array('attribute'=>'list_holder_1', 'like'=>'%'.$list_holder_2.'%'),
            ));
$_collection->addAttributeToFilter(
            array(
                array('attribute'=>'list_holder_2', 'like'=>'%'.$list_holder_1.'%'),
                array('attribute'=>'list_holder_2', 'like'=>'%'.$list_holder_2.'%'),
            ));
echo $_collection->getSelect();
?>

Пользователь должен иметь возможность искать каждое имя в любом текстовом поле. Таким образом, мой запрос заканчивается предложением where:

Я только добавил одно имя и одну коробку - «Холм»

WHERE (e.entity_type_id = '3') AND ((_table_list_holder_1.value like '%Hill%') OR (_table_list_holder_1.value like '%%')) AND ((_table_list_holder_2.value like '%Hill%') OR (_table_list_holder_2.value like '%%'))

Как вы можете видеть, он проверяет пустое значение в обоих полях. И по некоторым причинам это вытягивает каждую категорию. Даже если только 1 имеет значение list_holder_1 'Hill'.

Кто-нибудь знает, где я ошибся?

С уважением, Билли

1 Ответ

2 голосов
/ 13 мая 2011

% является подстановочным знаком, поэтому '%%' соответствует всем значениям.Если вы хотите сопоставить точные значения, не используйте like и %, используйте eq.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...