Get Customer Order collection using Magento 2 Programmatically is a simple task using creating a single Block class in the module.
Customer has multiple orders and we have requirement like gather all the customer orders for a site, in this case this article is used.
The customer id is required to fetch the customer placed Order collection in Magento 2.
Get Customer Order collection, We have to create a factory object of Magento\Sales\Model\ResourceModel\Order\Collection class.
Instantiate the Factory object to the __consturct() method and apply condition with customer id.
<?php namespace Jesadiya\CustomerPlacedOrder\Block; use Magento\Framework\View\Element\Template; use Magento\Framework\View\Element\Template\Context; use Magento\Sales\Model\ResourceModel\Order\CollectionFactory; class CustomerOrder extends Template { /** * @var array */ private $data; /** * @var Context */ private $context; /** * @var CollectionFactory */ private $orderCollectionFactory; public function __construct( Context $context, CollectionFactory $orderCollectionFactory, array $data = [] ) { $this->orderCollectionFactory = $orderCollectionFactory; $this->logger = $logger; parent::__construct($context, $data); } /** * @return array */ public function getCustomerOrder() { $customerId = 2; // pass customer id $customerOrder = $this->orderCollectionFactory->create() ->addFieldToFilter('customer_id', $customerId); return $customerOrder->getData(); } }
Using the above Block class, We have defined a method to fetch customer order by its id. Pass Dynamic Customer id to fetch record of Customer Order.
Call method $this->getCustomerOrder() with iterate over the loop the fetch customer placed order in Magento 2.
Using the loop, Each order will be display with its full details.
One Reply to “How to get Customer Order collection by Customer Id Magento 2?”