最近出售了5种独特的产品

时间:2012-08-09 14:03:25

标签: php magento

我想在magento中获取最近卖出的5个独特商品,我有以下代码片段。  它显示的是空白页面,但是当我从下面的代码中删除->getSelect()->group('product_id')时,它可以正常工作,但这些项目不再是唯一的。

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

如何按这些产品分组?

1 个答案:

答案 0 :(得分:2)

您的代码几乎是正确的 - 问题取决于您如何将方法调用链接在一起。

当链接方法调用时,每次调用都将返回一个对象,通常是对同一个类的引用。因此,在您的示例中,->getSelect()->group()调用出错了,因为它们返回对Varien_Db_Select对象的引用,而不是您期望的Mage_Sales_Model_Resource_Order_Item_Collection对象。< / p>

(另请注意,对于最近的订单,使用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/>';
}