【问题标题】:Magento "addAttributeToFilter like" with OR statement not working带有 OR 语句的 Magento“addAttributeToFilter like”不起作用
【发布时间】:2016-04-26 00:12:05
【问题描述】:

我正在做一个 Magento 项目,但我严重卡住了。

我想在我的查询中添加 2 个 LIKE 检查。

现在我的代码如下所示:

$this->_productCollection->addAttributeToFilter(
    array(
        array('attribute' => 'name', 'like' => '%'.$_GET["keyword"].'%'),
        array('attribute' => 'att_wine_alias', 'like' => '%'.$_GET["keyword"].'%')
    )
);

att_wine_alias: 带有拼写错误或标签的文本区域

所以,如果我使用此代码,Magento 不会在 name 字段中进行搜索。如果我从过滤器中删除 att_wine_alias 属性,name 搜索工作正常。

我想使用 OR 语句在 "like" 的两个 字段 中进行搜索。

我做错了什么?

谢谢! // 对不起英文错误

【问题讨论】:

    标签: php magento filter sql-like addattribute


    【解决方案1】:

    试试下面的代码,如果可行,请告诉我

    $this->_productCollection->addAttributeToFilter(
        array(
             array('attribute' => 'name', 'like' => $_GET["keyword"]),
             array('attribute' => 'att_wine_alias', 'like' => $_GET["keyword"])
        )
    );
    

    不过,addFieldToFilter 也是一个选项,其工作方式如下:

    ->addFieldToFilter(
        array('name', 'att_wine_alias'),
        array(
            array('like'=>'%' . $GET['keyword'] . '%'), 
            array('like'=>'%' . $GET['keyword'] . '%')
        )
     )
    

    下面的 cmets 中提到的错误可能是由于重新索引。您在使用平面表吗?

    以防万一,如果你是,那么你可能想要 REINDEX,然后再试一次。

    另外,这可能是因为代码必须放置在文件中的方式。如果您可以共享您尝试编写此代码的功能,将有助于调试它。

    希望这会有所帮助!

    快乐编码...

    【讨论】:

    • 好的,第一个(没有 % 标记)什么都不返回。第二个返回 mysql 错误:“'where 子句'中的未知列'e.n'”(我重新索引了所有内容)。我对我们的表(平面与否)一无所知,但我们将使用标准 SQL 查询创建一个 自定义视图。再次感谢您,也祝您编码愉快。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2020-07-03
    • 2012-03-25
    相关资源
    最近更新 更多