您的代码几乎是正确的 - 问题在于您如何将方法调用链接在一起。
当链接方法调用时,每个调用都会返回一个对象,通常是对同一个类的引用。因此,在您的示例中, ->getSelect()
and->group()
调用出现问题,因为它们返回对Varien_Db_Select
对象的引用,而不是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/>';
}