2012-08-09 74 views
0

我想購買最近售出的5件magento獨特產品,我有以下代碼片段。 它正在顯示一個空白頁面,但是當我從下面的代碼中刪除->getSelect()->group('product_id')時,它可以工作,但是這些項目不再是唯一的。近期售出5件獨特產品

$itemsCollection= Mage::getResourceModel('sales/order_item_collection') 
     ->join('order', 'order_id=entity_id') 
     ->getSelect()->group('product_id') 
     ->setOrder('order_id', 'desc') 
     ->setPage(1, 5) ; 

如何按這些產品進行分組?

+0

你能給輸出的例子? – Matt 2012-08-09 14:14:40

回答

2

你的代碼幾乎是正確的 - 問題在於你如何將方法調用鏈接在一起。

當鏈接方法調用時,每個調用都會返回一個對象,通常是對同一個類的引用。因此,在您的示例中,->getSelect()->group()調用發生錯誤,因爲它們會返回對象對象的引用,而不是您所期望的對象Mage_Sales_Model_Resource_Order_Item_Collection

(另請注意,它是安全的created_at而不是ORDER_ID最近一個訂單訂購)

所以,工作的例子是...

// Initialise the collection 
$itemsCollection = Mage::getModel('sales/order_item')->getCollection() 
    ->setOrder('created_at', Varien_Data_Collection::SORT_ORDER_DESC) 
    ->addAttributeToSelect('*') //Change this to only select the fields you require 
    ->setPage(1, 5) 
; 

// Separately add the GROUP BY clause 
$itemsCollection->getSelect()->group('product_id'); 

// Now you can safely iterate over the collection 
foreach($itemsCollection as $item) { 
    echo $item->getData('product_id') . ' - ' . $item->getData('created_at') . '<br/>'; 
}