好的,我有一个相当简单的模块正在运行,但是我遇到了一个我无法解决的产品集合问题。这是问题所在:
1)我根据发布的搜索类别加载产品集合:
$products = Mage::getModel('catalog/product')
->getCollection()
->addStoreFilter(Mage::app()->getStore()->getId())
->addAttributeToSelect('*')
->addAttributeToFilter('search_category', array('eq' => $data['search_category']));
2)我在一个基本函数中使用这个集合来检索属性:
$section = $this->getSections($products);
3) 接下来在代码中,如果发布了另一个值,我会进一步过滤产品集合,这会运行另一个函数。
if($data['section'] != "")
{
$products->addAttributeToFilter('section', array('eq' => $data['section']));
$profile = $this->getProfiles($products);
echo count($products);
echo count($products->getIds());
}
基本上进入第二个功能的产品是未经过滤的。如果我在此阶段回显 $products 对象的计数,它会给我产品集合中的原始数量,而不是过滤后的数量。
如果我回显 $products->getIds() 它会给我正确的过滤计数。
我真的不明白为什么这不起作用,我已经详细检查了代码,一切都是正确的。似乎如果我在函数中使用产品集合,则无法进一步过滤。
如果我将过滤器移到第一个函数上方,它可以工作,但它显然给了我想要的结果。
如果有人可以解释这一点,请帮助!