【问题标题】:Magento addAttributeToFilter problemMagento addAttributeToFilter 问题
【发布时间】: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'。

有人知道我哪里出错了吗?

问候, 比利

【问题讨论】:

    标签: zend-framework magento


    【解决方案1】:

    % 是通配符,因此'%%' 匹配所有值。如果要匹配精确值,请不要使用like%,而是使用eq

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多