Magento addAttributeToFilter 与多选
Posted
技术标签:
【中文标题】Magento addAttributeToFilter 与多选【英文标题】:Magento addAttributeToFilter with Multiple Select 【发布时间】:2012-05-09 15:56:15 【问题描述】:我在 Magento 多选属性上使用 addAttributeToFilter 时遇到问题。
我有一个汽车品牌的多选属性,所以内容是“奥迪”、“宝马”等。在我的示例中,我有一个轮胎产品,我从多项选择中选择了 5 个品牌。
我想显示将“BMW”品牌作为其选定字段之一的产品。
我尝试了以下所有方法都不起作用:
$products->addAttributeToFilter('make', array('like' => '%BMW%'));
$products->addFieldToFilter('make', array('like' => '%BMW%'));
$products->addAttributeToFilter('make', array('like' => '%38%')); // id of the attribute option
似乎没有任何效果。
【问题讨论】:
是否 $products->addAttributeToFilter('make', '38') 或 $products->addAttributeToFilter('make', array('eq', 38));给你什么? 它不起作用。由于它是一个多选属性,Magento 将“make”创建为这样的字符串:28,30,35,38 - 所以如果我需要按 id 38 的 BMW 过滤产品,那么我需要它来检查所有这些值。finset
我可以选择吗?类似$products->addAttributeToFilter("make", array("finset"=>"38"));
谢谢亚历克斯,这似乎可行!
【参考方案1】:
解决方案是使用Find In Set
查询,例如:
$this->_productCollection->addAttributeToFilter("make", array("finset"=>"38"));
可以在这里看到讨论:http://www.magentocommerce.com/boards/viewthread/201312/
以及不同选项的列表:http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-8-varien-data-collections
【讨论】:
我发现这也适用于常规下拉菜单,而不仅仅是多选。我不确定常规下拉菜单是否会降低速度。在 ee 1.14.2 上测试 我必须登录才能投票这个答案。谢谢你拯救了我的一天。【参考方案2】:试试下面的语法 finset 它对我有用。
$collection->addAttributeToFilter($attribute,
array(
array('finset'=> array('237')),
array('finset'=> array('238')),
array('finset'=> array('239')),
)
);
【讨论】:
以上是关于Magento addAttributeToFilter 与多选的主要内容,如果未能解决你的问题,请参考以下文章
安装完magento后,其他电脑无法访问magento,URL自动跳转到http://localhost/magento
Magento:为国家/地区 magento 设置默认商店视图
如何创建 Magento-2 扩展包以上传到 Magento-2 官方网站?
Magento 2 Theme Ultimate Guide - 如何创建Magento 2主题终极指南