2

当在 Magento 中的目录或目录搜索页面上使用多选的多个值作为过滤器时,多个值是 or'd 一起 - 即结果是具有任何这些属性的产品的并集。

我如何获得具有选定属性的产品集的交集 - 即只有那些具有所有选定属性的产品?

4

1 回答 1

1

在 Magento 的标准行为中,您只能过滤一个值,如 Lucasmus 已经指出的。因此,您似乎正在使用一些自定义或模块来编辑 core/Mage/Catalog/Model/Layer/Filter/Attribute.php 模型的行为。还必须重写 Mage_Catalog_Model_Resource_Eav_Mysql4_Layer_Filter_Attribute 类,这正是您可以更改您要求的行为的类。在那个类中,方法

applyFilterToCollection($filter,$value)

创建相应的 SQL 代码来进行过滤。目前您的模块或扩展可能使用 OR 表示法,或使用类似的东西

$connection->quoteInto("{$tableAlias}.value IN (?)", $value),

因此它会搜索您要过滤的任何值。要实现 AND,您必须通过将 $value 拆分为其不同的部分并为每个单独的值使用 where 子句来重写此方法。希望这是有道理的。

于 2012-12-19T13:39:56.027 回答