0

我认为对于稍微熟悉 Magento 的人来说,这应该是一个简单的问题,但我对它很陌生,还没有找到解决方案。

我正在尝试过滤一个报告/product_collection,我需要使用它来获取按类别按订单数量排序的产品,示例代码:

$store = Mage::app()->getStore();
$category = 42; // just an example
$products = Mage::getResourceModel('reports/product_collection')
                ->addAttributeToSelect('*')
                ->addAttributeToFilter("status", Mage_Catalog_Model_Product_Status::STATUS_ENABLED)     
                ->setPageSize(9)
                ->setCurPage(1) 
                ->addOrderedQty()
                ->setOrder("ordered_qty", "desc")
                ->setStore($store)
                ->addStoreFilter($store)
                ->addCategoryFilter(Mage::getModel('catalog/category')->load($category)); 

在 catalog/product_collection 上使用 addCategoryFilter() 方法可以正常工作,但在报告/product_collection 上它似乎没有做任何事情,它仍然查询所有类别的产品。顺便说一句, addAttributeToFilter() 方法似乎也不起作用。

我错过了什么?

4

2 回答 2

0

虽然只是漫无边际,但它不应该更像这样吗?我认为您的过滤器分级不正确。恕我直言

$store = Mage::app()->getStore();

$category = 42; // just an example

$products = Mage::getResourceModel('reports/product_collection')
            ->addAttributeToSelect('*')
            ->addAttributeToFilter("status", Mage_Catalog_Model_Product_Status::STATUS_ENABLED)     
            ->setPageSize(9)
            ->setCurPage(1) 
            ->addOrderedQty()
            ->setOrder("ordered_qty", "desc")
            ->setStore($store)
            ->addStoreFilter($store)
            ->addAttributeToFilter('category_id', array('in' => $category)); 
于 2012-04-20T18:12:47.673 回答
0

您要查询的类别是否设置为锚?我认为这会导致它也包括所有 subcat 的产品。

于 2013-07-17T05:59:27.617 回答