ユーザーにさらにデータを表示するために大まかな計算を基にしたい販売量 (基本的には店舗が生成している金額) のおおよその値を取得できる方法を探しています。
(オプションA)データベースに直接クエリを実行して結果をキャッシュできることはわかっていますが、Magentoはすでにそれを行っており、使用できる場所にキャッシュしていますか? (オプション B)、Magento のように生涯売上と平均売上の値をどこかに保存します。
ここでは、日次/週次/月次の売上高の平均、または平均注文額と日次/週次/月次の平均注文などのデータで十分です。
オプション A がここに行く唯一の方法である場合、このデータをどのように照会すればよいですか? 次のような例を見てきました。
Mage::getResourceModel('sales/order_collection')
Mage::getModel('sales/order')->getCollection()
私のニーズに対して、どちらがより高速で軽量ですか? また、それぞれの場合にクエリに使用できるパラメーターを理解できるように、それらを使用する詳細なまたはよく説明された例を実際に見ることができるリンクはありますか?
更新: 上記の 2 つの方法の違いを明確に理解していませんが、一方が他方よりも抽象化されており、おそらくもう一方を内部で使用していると思いますが、よくわかりません。とにかく、このコード スニペットでデータを取得していますが、日付範囲のデータをフィルター処理する際に問題があります。
<?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";
更新: このコード スニペットは現在機能しています。範囲内の注文があったのですが、注文状況が「処理中」で見れませんでした。この質問からスニペットを取得しました。
上記の2つの方法の違いと、どちらを使用するのが良いかについての説明をまだ探していますか?