2013-04-09 103 views
2

有幾個案例報告說,這個查詢的標準解決方案不起作用(SO上的類似問題正在束手無策,沒有確切的解決方案)。Magento 1.7按訂購數量排序 - 暢銷書產品問題

什麼人會做檢索的「暢銷書」的集合就是用這種查詢生成器:

$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)。

回答

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') 
; 
+0

感謝您的回答,我目前有另一種實施依賴更多的程序方法。它並不優雅,所以我會給你的版本一個鏡頭。 – teodron 2013-06-30 09:00:20