2

In Magento 2, we can update an order data (a data in sales_order) using Magento Sales OrderRepository .

My questions is:

How we can update the sales_order_item data (the qty_invoiced and qty_shipped using order_id?

Can anyone give me at least a way on how to do it or where to start?

3
  • You can load the model Magento\Sales\Model\Order\Item and can save the data you want. Commented Feb 21, 2019 at 8:32
  • I need to update data using order_id, can you give an example on how to implement it? Commented Feb 21, 2019 at 8:33
  • 1
    @magefms Updated the answer as per the requirement. Please check +1 for the effort this question made me to take. Commented Feb 21, 2019 at 11:46

1 Answer 1

4

Try this, In your controller add the following code

<?php namespace Vendor\Module\Controller\Orders; class SetOrders extends \Magento\Framework\App\Action\Action { protected $orderItemRepo; protected $resultPageFactory; protected $itemFactory; public function __construct( \Magento\Sales\Model\Order\ItemFactory $itemFactory, \Magento\Sales\Api\OrderItemRepositoryInterface $orderItem, \Magento\Framework\App\Action\Context $context, \Magento\Framework\View\Result\PageFactory $resultPageFactory ) { $this->itemFactory = $itemFactory; $this->orderItemRepo = $orderItem; $this->resultPageFactory = $resultPageFactory; parent::__construct($context); } public function execute() { try { //$itemId = 6; $orderId = 5; $order = $this->itemFactory->create()->getCollection()->addFieldToFilter('order_id', $orderId); foreach ($order as $items) { $itemId = $items->getItemId(); $order = $this->orderItemRepo->get($itemId); $order->setAdditionalData('this is custom field'); $order->save(); } echo "success"; } catch (\Exception $e) { error_log($e->getMessage()); } }} 

hope this may help and let me know if it works or not.

10
  • I'll check and inform you if it works Commented Feb 21, 2019 at 8:54
  • "Fatal Error: 'Uncaught Error: Call to a member function setCustomField() Commented Feb 21, 2019 at 9:04
  • wait I'll try that Commented Feb 21, 2019 at 9:10
  • Replace this $order->setCustomField(); with $order->setQtyOrdered(10); This will update the ordered items. Commented Feb 21, 2019 at 9:12
  • the same error I got after changing Commented Feb 21, 2019 at 9:14

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.