有几个案例报告此查询的标准解决方案不起作用(关于SO的类似问题是abunding,没有任何明确的解决方案)。
检索“畅销书”集合的做法是使用此查询构建器:
$storeId = Mage::app()->getStore()->getId();
$collection = Mage::getResourceModel('reports/product_collection');
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
$collection = $collection
->addFieldToFilter('*')
->addOrderedQty()
->addStoreFilter()
->setStoreId($storeId)
->setOrder('ordered_qty', 'desc')
->setPageSize(10)
->setCurPage(1);
现在,$collection
结果包含一些虚假值,并且它完全缺少重要属性(没有名称,价格等)。我甚至无法在1.7中尝试this core-code workaround。
有人可以发布Magento 1.7验证/认证/测试的解决方案吗? (或最新的Magento发布)。
答案 0 :(得分:2)
这可能适用于您,也可能不适合您,它可能不是最有效的方式,但它可以帮我完成工作,所以它在这里与您的部分代码合并。
$storeId = Mage::app()->getStore()->getId();
$collection = Mage::getResourceModel('reports/product_collection');
$collection->setVisibility(Mage::getSingleton('catalog/product_visibility')->getVisibleInCatalogIds());
$collection = $collection
->addFieldToFilter('*')
->addStoreFilter()
->setStoreId($storeId)
->setPageSize(10)
->setCurPage(1);
$collection->getSelect()
->joinLeft(
'sales_flat_order_item AS order_item',
'e.entity_id = order_item.product_id',
'SUM(order_item.qty_ordered) AS ordered_qty')
->group('e.entity_id')
->order('ordered_qty DESC')
;