Magento 2: Custom Data in Custom Column of Sales Order Table Not Working

magento2

I have created a custom column in order table of Magento 2 with the name:

order_detail_data

Now, I want to save some custom data in this column by using

sales_order_place_before

My Observer code against above-mentioned event is:

namespace Vendor\Module\Observer;

use Magento\Framework\Event\ObserverInterface;

class OrderPlacebeforeSaveData implements ObserverInterface
{

protected $_coreSession;

public function __construct(
    \Magento\Framework\Session\SessionManagerInterface $coreSession

) {
    $this->_coreSession = $coreSession;
}

public function execute(\Magento\Framework\Event\Observer $observer)
{
    $orderDetailData = $this->_coreSession->getOrderDetailSession();
    $order = $observer->getEvent()->getOrder();
    $order->setData('order_detail_data', json_encode($orderDetailData));
    $order->save();
}
}

But unfortunately, I am not able to save data in this column.

Best Answer

You can use sales_model_service_quote_submit_before event or as SohelRana said you can use sales_order_place_after and add this below code :

namespace Vendor\Module\Observer;

use Magento\Framework\Event\ObserverInterface;

class SalesOrderPlaceAfter implements ObserverInterface
{
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        try {
            $orderDetailData = 'your value';
            $order = $observer->getEvent()->getOrder();
            $order->setData('order_detail_data', json_encode($orderDetailData));
            $order->save();
        } catch (\Exception $e) {
            error_log($e->getMessage());
        }
    }
}
Related Topic