我能做到这一点与普通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));
先感谢您!
“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);
而不是试图通过对查询添加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'
。 你也可以把所有收集修饰符在一行。
我们还以一个过滤器加入到排除除了完成订单的一切。 由于这是以前写的,它只能算作从取消订单总计为好。 如果要算取消的订单,只需删除该行。