0

第1四半期の売上高を引き出そうとしています。これがうまくいかないようです。助言がありますか?

$total = 0;
$orders = Mage::getModel('sales_order/collection')
   ->addAttributeToSelect('*')
   ->addAttributeToFilter('created_at', array(
      'from' => '2012-01-01',
      'to' => '2012-03-31'));
foreach ($orders as $order) {
   $total += $order->getGrandTotal();
}
echo $total;
4

1 に答える 1

1

コレクションが正しく取得されていません。これを行うには複数の方法があります。いくつかの方法を組み合わせたようです。

  1. Mage::getModel('sales/order')->getCollection()また
  2. Mage::getResourceModel('sales/order_collection')

ただし、本当に必要なのが単一の属性を合計することgrand_totalだけである場合は、販売注文コレクション全体をロードするよりも、独自のクエリを作成するがはるかに効率的です。

$db = Mage::getSingleton('core/resource')->getConnection('core_read');
$salesTable = Mage::getSingleton('core/resource')->getTableName('sales/order');
list($total) = $db->fetchCol(
    $db->select()
       ->from($salesTable, array('grand_total' => 'SUM(grand_total)'))
       ->where('DATE(created_at) >= ?', '2012-01-01')
       ->where('DATE(created_at) <= ?', '2012-03-31')
);
echo $total;
于 2012-06-26T20:10:18.563 に答える