Get order collection by order id in Magento 2?
-
24-02-2021 - |
Question
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()
Solution
Just Remove getCollection
:-
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$orders = $objectManager->create('Magento\Sales\Model\Order')->load($oid);
echo $custLastName= $orders->getCustomerLastname();
OTHER TIPS
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();
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.
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange