Magento 2 – Fix sales_order_place_after Not Returning Order ID

event-observermagento2place-ordersales-order

I have created an event for sales_order_place_after event.

This doesn't return Order Id. However, it returns Increment ID

public function execute(Observer $observer)
    {
        $order = $observer->getEvent()->getOrder();       
        $order->getIncrementId();
        $order->getId();
    }

Best Answer

In Magento 2 observer I used this code, you get the order data like this,

use Magento\Framework\Event\ObserverInterface;

class YOUROBSERVERCLASS implements ObserverInterface
{
    protected $orderFactory;

    public function __construct(\Magento\Quote\Model\QuoteFactory $quoteFactory,
    \Magento\Sales\Model\Order $orderFactory)
    {
        $this->orderFactory = $orderFactory;
    }

    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        $orderIds = $observer->getEvent()->getOrderIds();
        $lastorderId = $orderIds[0];

        $order = $this->orderFactory->load($lastorderId);
    }
}