如何从Magento中的集合中删除通过“ - > addAttributeToFilter()”添加的属性

时间:2012-02-22 08:21:55

标签: magento

考虑以下代码:

$productCollection123 = Mage::getModel('catalog/product')->getCollection()
    ->addStoreFilter(Mage::app()->getStore())
    ->addAttributeToFilter('type_id', array('eq' => 'simple'))
    ->addAttributeToFilter('color',5);

因此结果计数为count($productCollection123) = 57,现在是否可以执行removeAttributeFromFilter,以便从当前集合结果中删除条件'color'=5

注意:不应删除条件'type_id'='simple'

2 个答案:

答案 0 :(得分:3)

不,您必须构建一个新查询。一旦使用带条件的查询命中数据库,您不仅可以删除条件并拥有新数据,还必须构建新查询。

答案 1 :(得分:1)

Afaik标准Magento没有任何方法可以明确删除过滤器(除了clear(),它会重置所有过滤器并卸载集合)。

说实话,在加载集合后删除过滤器没有多大意义。至少对我而言。

我唯一想到的就是构建一个具有最小过滤器(第二个)的集合,然后clone,并使用最大过滤器(第一个)扩展克隆。

这可以节省一些代码行,但缺乏可读性/可维护性。