как получить количество заказов клиентов для всех клиентов в magento
Я попробовал это, и это работает, но я могу сделать это только для конкретного клиента, но мне это нужно для всех клиентов.
<?php
$customer_id = 5;
$_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('customer_id',$customer_id);
$_orderCnt = $_orders->count(); //orders count
echo 'Customer with ID '.$customer_id.' has '.$_orderCnt.' orders';
?>
1
3 answers
Используйте приведенный ниже код:
<?php
$customerCollection = Mage::getModel('customer/customer')->getCollection()
->addAttributeToSelect('entity_id');
foreach($customerCollection as $customer){
$_orders = Mage::getModel('sales/order')->getCollection()->addFieldToFilter('customer_id',$customer->getId());
$_orderCnt = $_orders->count(); //orders count
echo 'Customer with ID '.$customer_id.' has '.$_orderCnt.' orders';
}
?>
4
Author: Prashant Valanda, 2018-01-22 07:43:54
Вам нужно собрать коллекцию клиентов. Вы можете перебирать коллекции. Код для interator можно найти в этом посте
Https://stackoverflow.com/questions/3786826/how-to-loop-a-magento-collection
Как только у вас появится итератор, вам нужно динамически получить идентификатор каждого клиента и передать его в свой фильтр.
2
Author: Timik, 2017-05-23 12:37:16
Используйте group by, чтобы сгруппировать их на основе идентификатора клиента, а затем получить подсчет по нему..
вы можете использовать группировку в своей коллекции следующим образом :
$collection->getSelect()->group('table_name.entityname');
2
Author: Shahzaib Hayat Khan, 2017-02-22 19:39:56