您好我有一个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'。
任何人都知道我哪里出错了?
此致 比利
答案 0 :(得分:2)
%
是一个通配符,因此'%%'
匹配所有值。如果您想匹配确切的值,请不要使用like
和%
,而是使用eq
。