我正在尝试为magento集合添加多个过滤器,我可以在基本级别上执行此操作。 我真正想做的是能够通过许多嵌套过滤器过滤集合,这些过滤器可以是任何级别的深度。例如,我知道我可以使用以下代码添加多个过滤器:
$collection->addAttributeToFilter('example_attribute', array('eq' => 1));
我希望能够做的是拥有可以互相嵌套的过滤器(AND& OR)。我不确定Magento系列是否允许你这样做,但我无法在网上找到任何例子。
进一步详细说明和示例: 我需要过滤一个集合,其中等效的SQL(忽略我需要的选定字段和JOINS)将是:
SELECT .........
WHERE
(attribute1 = 1
OR
atttribute2 = 'yes')
AND
qty > 5
AND(
(attribute3 != 'no'
AND
attribute4 = 50 )
OR
(attribute3 != 'no'
AND
attribute6 > 50 )
)
这只是一个快速粗略的例子,但基本问题是如何嵌套任意数量的过滤器。
答案 0 :(得分:0)
您可以使用以下代码进行OR调节:
$collection->addAttributeToFilter(array(
array('attribute'=> 'someattribute','like' => 'value'),
array('attribute'=> 'otherattribute','like' => 'value'),
array('attribute'=> 'anotherattribute','like' => 'value'),
));
编辑: 使用此功能,您应该能够在查询中至少执行AND和OR调节。似乎标准行为不允许嵌套AND OR条件。所以我假设您需要为此编写自定义查询。 有关进一步参考,请检查文件Mage_Eav_Model_Entity_Collection_Abstract,其中定义了方法addAttributeToFilter。