我需要按天收到所有订单总数。 2013-03-07 - 40 $(今天所有订单总数) 2013-03-06 - 50 $ 等等.. 有人可以帮忙吗?
感谢。
答案 0 :(得分:2)
您可能需要查看sales_order_aggregated_created
表。这是用于订单报告部分的表。 Magento按天,商店和状态汇总所有订单。
因此,它将大大减少计算所有数据的工作量,因为它已经计算并存储在那里。
此外,没有必要使用模型层来实现您的目的。只需使用Varien数据库适配器。 以下是如何获得“day” - StoreId 1的“订单总数”和订单状态“完成”的示例:
$connection = Mage::getResource('core/resource')->getConnection('core_read');
$select = $connection->select()
->from($connection->getTableName('sales_order_aggregated_created'), array('date'=>'period', 'order_total'=>'total_income_amount'))
->where('store_id=:storeId')
->where('order_status=:orderStatus');
$bind = array(':storeId'=>1,':orderStatus'=>'complete');
$rows = $connection->fetchAll($select, $bind);
print_r($rows);
我没有尝试过这段代码,所以可能会有拼写错误,但一般情况下它应该可以正常运行。
此外,聚合表不会自动填充,因此您需要在管理面板中定期更新统计信息,或者为您配置一个cron作业(可能已经创建并且是Magento发行版的一部分 - 我只是不知道那个)。
玩得开心。
答案 1 :(得分:1)
我发现很多订单,你很快就会达到内存限制,所以我一次只能加载一年左右。如果遇到内存限制,则可能需要执行相同的操作。如果你愿意,请忽略所有这些。我也没有对此进行测试,因为我没有方便的测试安装(这只是对我已经存在的一些代码的快速更改),但这至少应该是聚合数据的一个不错的开端。
$totals = array();
$ocol = Mage::getModel('sales/order')->getCollection();
$ocol->load();
foreach ($ocol->getItems() as $order) {
$createdat = new DateTime($order->getCreatedAt());
$totals[$datetime->format('w')] += $order->getBaseGrandTotal();
}
您现在应该有一个数组,其中键是日期,值是该日期的总和。无论状态如何,它都会使用所有订单。不确定这是不是你想要的,但是因为你还没有提到你到目前为止所尝试的内容,我猜你只是在找一个起点,这可能就足够了。随意问一下是否有意义。
答案 2 :(得分:0)
我认为你不需要任何代码。只需进入管理员,在报告>下销售>订单,选择您的日期范围,并将您的期间设置为“日期”。
如果这不是你想要的,我想我们只需要更多关于你所寻找的细节。