我参与了一个Magento项目,但我认真地坚持了下来。
我想在查询中添加2个 LIKE 检查。
现在我的代码看起来像这样:
$this->_productCollection->addAttributeToFilter(
array(
array('attribute' => 'name', 'like' => '%'.$_GET["keyword"].'%'),
array('attribute' => 'att_wine_alias', 'like' => '%'.$_GET["keyword"].'%')
)
);
att_wine_alias : 带有拼写错误或标签的textarea
因此,如果我使用此代码,Magento不会搜索名称字段。如果我从过滤器中删除 att_wine_alias 属性,名称搜索工作正常。
我想使用OR语句在字段中搜索“like”。
我做错了什么?
谢谢! //对不起英语错误
答案 0 :(得分: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'] . '%')
)
)
以下评论中提到的错误可能是因为ReIndexing。你在使用平桌吗?
以防万一,如果你那么你可能想要REINDEX,然后再试一次。
此外,这可能是因为代码必须放在文件中的方式。如果您可以共享您尝试编写此代码的函数,将帮助调试它。
希望这有帮助!
快乐编码......