【发布时间】:2011-05-13 16:14:04
【问题描述】:
您好,我有一个 magento 网站,它使用类别作为人们的礼物清单。每个类别都有一个 list_holder_1 和 list_holder_2 属性。
我创建了一个表单,用户可以搜索 giflists(类别),每个属性都有一个文本框。
我将 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 子句结束:
我只添加了一个名字是一个盒子 - 'Hill'
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'。
有人知道我哪里出错了吗?
问候, 比利
【问题讨论】: