我正在寻找一种能够获得销售量近似值(基本上是商店产生了多少钱)的方法,我想以此为基础进行粗略计算以向用户显示更多数据。
(选项 A)我知道我可以直接查询数据库然后缓存结果,但是 Magento 是否已经这样做并将其缓存在我可以使用的某个地方?(选项 B),就像 Magento 一样,在某处保存终身销售价值和平均销售价值。
任何数据,如每日/每周/每月平均销售额或平均订单金额和每日/每周/每月平均订单数据都足够了。
如果选项 A 是唯一的方法,我应该如何查询这些数据?我见过这样的例子:
Mage::getResourceModel('sales/order_collection')
Mage::getModel('sales/order')->getCollection()
哪个更快、更轻量级满足我的需求?以及我在哪里可以实际看到详细或解释清楚的使用它们的示例的任何链接,以便我可以了解在每种情况下可用于查询的参数?
更新:我仍然不清楚上述两种方法之间的区别是什么,但我的猜测是一种比另一种更抽象,并且可能在内部使用另一种,但我不确定。无论如何,我有这个代码片段拉入数据,但我在过滤日期范围的数据时遇到问题:
<?php
require_once 'app/Mage.php';
#umask(0);
Mage::app('default');
$orderTotals = Mage::getModel( 'sales/order' )->getCollection()
->addAttributeToFilter( 'status', Mage_Sales_Model_Order::STATE_COMPLETE )
->addAttributeToFilter( 'status', 'complete' )
//->addAttributeToFilter( 'created_at', array( 'from' => date( 'Y-m-d', strtotime( '-100 days' ) ) ) )
//->addAttributeToFilter( 'created_at', array( 'from' => date( 'Y-m-d', strtotime( '-100 days' ) ), 'to' => date( 'Y-m-d' ) ) )
->addAttributeToSelect( 'grand_total' )
->getColumnValues( 'grand_total' )
;
$totalSum = array_sum( $orderTotals );
$totalSum = Mage::helper( 'core' )->currency( $totalSum, true, false );
echo $totalSum . "\n";
更新:此代码段现在正在运行。我在该范围内有订单,但他们的订单状态是“处理中”,所以我看不到它们。我从这个问题中得到了片段。
我仍在寻找上述两种方法的不同之处以及哪种方法好用的解释?