Magento addAttributeToFilter问题

时间:2011-05-13 16:14:05

标签: zend-framework magento

您好我有一个magento网站,它使用类别作为人们的礼品清单。每个类别都有一个list_holder_1和list_holder_2属性。

我创建了一个表单,用户可以使用每个属性的文本框搜索giflists(类别)。

我正在使用带有类似原因的addAttributeToFilter的getModell..getCollection()方法,但我得到了奇怪的结果。

这是我的代码..

<?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 个答案:

答案 0 :(得分:2)

%是一个通配符,因此'%%'匹配所有值。如果您想匹配确切的值,请不要使用like%,而是使用eq