Magento2 Sales Order – Get Product Options Value

custom-optionsmagento2order-itemssales-order

In sales_order_item table, there's a column product_options to store some custom values.

I need to get the deliverydates from the following value (value from the db column product_options)

{"info_buyRequest":{"qty":"1","super_attribute":{"137":"2803","93":"17717"},"product":"37702","deliverydates":"2018-04-07"}}

I have tried the following code, but is not working.

    foreach ($this->order->getAllVisibleItems() as $orderItem) {
        $options = $orderItem->getProductOptions(); 
        #$options = $orderItem->getProduct()->getTypeInstance(true)->getOrderOptions($orderItem->getProduct());
        if(!empty($options['options'])) {        
            foreach ($options['options'] as $option) {
                if ($option['label'] == 'deliverydates'){
                    $deliverydate = $option['value'];
                }
            }
        }

Best Answer

Based on your json, you cannot get the delivery dates by options key, you have to use info_buyRequest, Try this

foreach ($this->order->getAllVisibleItems() as $orderItem) {
     $options = $orderItem->getProductOptions(); 
        if(!empty($options['info_buyRequest'])) {
            if(!empty($options['info_buyRequest']["deliverydates"])) {
                $deliverydates = $options['info_buyRequest']["deliverydates"];
             }
        }
}
Related Topic