как получить количество заказов клиентов для всех клиентов в 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';
?>
Author: Jaimin, 2017-02-22

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