3

I am trying to get order collection by order id in Magento 2.

Here is my code:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$orders = $objectManager->create('Magento\Sales\Model\Order')->getCollection()->load($oid);

echo $custLastName= $orders->getCustomerLastname();

But its is giving fatal error:

 Call to undefined method Magento\Sales\Model\ResourceModel\Order\Collection::getCustomerLastname()
  • 1
    use $orders = $objectManager->create('Magento\Sales\Model\Order')->load($oid); – bang.nguyen47 Apr 3 at 6:58
  • This method does not return customer information. So I need collection of it that provides customer information as well – Arshad Hussain Apr 3 at 7:00
  • check my answer just remove getCollection – Rk Rathod Apr 3 at 7:06
4

Just Remove getCollection :-

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$orders = $objectManager->create('Magento\Sales\Model\Order')->load($oid);

echo $custLastName= $orders->getCustomerLastname();
1

The Following code will easily get Customer details, Billing, Shipping and order totals

  $orderId = 1222;
  $objectManager = \Magento\Framework\App\ObjectManager::getInstance(); 
  $order = $objectManager->create('\Magento\Sales\Model\OrderRepository')->get($orderId);

  /*get customer details*/

  $custLastName= $orders->getCustomerLastname();
  $custFirsrName= $orders->getCustomerFirstname();
  $ipaddress=$order->getRemoteIp();
  $customer_email=$order->getCustomerEmail();
  $customerid=$order->getCustomerId();

  /* get Billing details */  
  $billingaddress=$order->getBillingAddress();
  $billingcity=$billingaddress->getCity();      
  $billingstreet=$billingaddress->getStreet();
  $billingpostcode=$billingaddress->getPostcode();
  $billingtelephone=$billingaddress->getTelephone();
  $billingstate_code=$billingaddress->getRegionCode();

  /* get shipping details */

  $shippingaddress=$order->getShippingAddress();        
  $shippingcity=$shippingaddress->getCity();
  $shippingstreet=$shippingaddress->getStreet();
  $shippingpostcode=$shippingaddress->getPostcode();      
  $shippingtelephone=$shippingaddress->getTelephone();
  $shippingstate_code=$shippingaddress->getRegionCode();

 /* get  total */

  $tax_amount=$order->getTaxAmount();
  $total=$order->getGrandTotal();
1

Try this,

<?php                                                                 
namespace Vendor\Module\Controller\Orders;                                
class ReadOrders extends \Magento\Framework\App\Action\Action                 
{
public function __construct(
 \Magento\Framework\App\Action\Context $context,
 \Magento\Sales\Api\OrderRepositoryInterface $orderRepo
) {
   $this->orderRepo = $orderRepo;
   parent::__construct($context);
}

public function execute()
{
   $entity_id = '12'; // its called increment id
   $order = $this->orderRepo->get($entity_id);
   echo $order->getCustomerId();
   echo $order->getCustomerFirstname();
   echo $order->getCustomerEmail();

}
}

Don't use object manager anywhere and you can use the above code in block or helper anywhere to get the collection.

Hope this helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.