Magento的获取设定日期之间的订单总数的SUM(Magento Get SUM of order

2019-07-30 21:11发布

我能做到这一点与普通MySQL,但我希望能够做到这一点“Magento的方式”,因为它是...

我想这样做,是为一组日期之间我的订单总数运行一个查询,这将SUM(grand_total),即从2012年7月制定的总收入。

我试着在这个各种变化,我也许真的接近或我可能是一百万英里远,所以我感谢所有帮助任何人都可以给我! 我至今是:

$orders = Mage::getModel('sales/order')->getCollection();

$orders->addAttributeToFilter('date_field', array(
'from' => '2011-09-01',
'to' => '2011-09-30',
));
$orders->addExpressionAttributeToSelect('grand_total', 'SUM({{grand_total}})', grand_total);
$orders_total->getSelect()->$orders->grand_total(SUM(grand_total));

先感谢您!

Answer 1:

“Magento的方式”将使用集合 。

你的问题状态七月以来的所有订单? 如果是这种情况,那么你只需要在过滤器中的“从”,而不是“到” ...

$orderTotals = Mage::getModel('sales/order')->getCollection()
    ->addAttributeToFilter('status', Mage_Sales_Model_Order::STATE_COMPLETE)
    ->addAttributeToFilter('created_at', array('from'  => '2012-07-01'))
    ->addAttributeToSelect('grand_total')
    ->getColumnValues('grand_total')
;
$totalSum = array_sum($orderTotals);

// If you need the value formatted as a price...
$totalSum = Mage::helper('core')->currency($totalSum, true, false);


Answer 2:

而不是试图通过对查询添加mysql的表情尝试以下方法做到这一点:

$orders = Mage::getModel('sales/order')->getCollection();
$orders->addAttributeToFilter('created_at', array(
'from' => '2011-09-01',
'to' => '2011-09-30',
))
->addAttributeToSelect('grand_total')
->addAttributeToFilter('status', array('eq'=>'complete'))
;
$grandTotal = 0;

foreach($orders as $order)
{
    $grandTotal += $order->getGrand_total();
}

这里我们通过获取集合,然后具有贯穿其中Magento的循环,并添加了总计为集合中的每个订单。

请注意,我们改变了'date_field''created_at' 。 你也可以把所有收集修饰符在一行。

我们还以一个过滤器加入到排除除了完成订单的一切。 由于这是以前写的,它只能算作从取消订单总计为好。 如果要算取消的订单,只需删除该行。



文章来源: Magento Get SUM of order totals between set dates