I have a controller with following code
$data = $this->getRequest()->getPostValue();
$item_id = $data['item_id'];
$additionalOptions = $data['additional_options'];
$itemFactory = $this->itemFactory->create()->load($item_id);
$itemFactory->setAdditionalData($additionalOptions);
$itemFactory->save();
but it throws following error while saving the quote item data as follows.
Fatal error: Uncaught Error: Call to a member function getStoreId() on
null in
vendor/magento/module-quote/Model/Quote/Item/AbstractItem.php:144
Stack trace: #0
Best Answer
I think you are trying to loading an the model
\Magento\Quote\Model\Quote\Item
withquote_id
parameter, which I think won't work.What you need to do here is, use the
quote_id
parameter to load\Magento\Quote\Model\Quote
model instance and then pick the right\Magento\Quote\Model\Quote\Item
through it and set your data.So this is what you need to do here.
Here
$this->quoteRepository
dependency should be\Magento\Quote\Api\CartRepositoryInterface
. Also in theforeach
loop, if you want to add further filtering for the quote item, then you should add it too.