Я заметил, что существует несколько способов получить общее количество заказов в Magento, используя getSize(), for loop или count(), однако они предоставляют разные результаты в пределах одного и того же временного диапазона. Хотелось бы узнать, как наилучшим образом получить правильное общее количество заказов в Magento, и какова разница между getSize(), для цикла и count() при расчете количества заказов. Ниже приведен код, который я использовал для тестирования между getSize() и циклом.Как получить правильное общее количество заказов в Magento
//get order total amount
$OrdersAmount_completed = Mage::getModel('sales/order')->getCollection()
->addAttributeToFilter('status',array('eq' => Mage_Sales_Model_Order::STATE_COMPLETE))
->addAttributeToFilter('created_at', array(
'from' => $timefrom,
'to' => $timeto,))
// ->getSize() //this generates a difference result with $num_completed
;
foreach ($OrdersAmount_completed as $order_completed)
{
$num_completed++;
}
Когда вы выполняете 'getSize' или' count', вы получаете '0'? Я думаю, что я помню, что они были ленивы загружены в коллекцию, поэтому 'getSize' и' count' фактически были бы числом, выбранным в коллекцию, а не записями в БД, если только вы не зациклились на всех записях в первую очередь. Однако, если это так, я, похоже, помню звонок, который вы могли бы сделать, чтобы загрузить весь результат без цикла ... я мог ошибаться, это было через несколько месяцев после моего последнего проекта Mage. – prodigitalson
Спасибо за ваш комментарий. Я заметил, что использование getSize и count дает мне такое же неправильное количество заказов (меньше фактической суммы) по сравнению с результатом в Magento backend> Report. Цикл foreach ближе к фактической величине, но все же неверен. – Yolanda