Estou tentando atualizar o item de citação no magento2. Mas sempre que estou salvando o item, ele cria um novo item com o mesmo ID de cotação, em vez de atualizá-lo. Aqui está o meu código
public function __construct(
\Magento\Quote\Model\QuoteRepository $quoteRepo
){
$this->_quoteRepo = $quoteRepo;
}
public function updateItem(){
$quote = $this->_quoteRepo->get('id here');
foreach($quote->getAllVisibleItems() as $itemq){
$itemq->setQty(5);
$itemq->setPrice(20);
$itemq->save();
}
}
Mas toda vez que ele salva um item, um novo item é gerado. Não sei porque. Também I couldn't find any class which explicitly load qoute item in magento2
. Ajuda será apreciada.
Nesta pergunta, /magento/139298/how-to-save-quote-items-in-magento-2
eles estão configurando o produto inteiro ... não tentando atualizá-lo. Quando você define um produto, um novo item de cotação certamente será gerado. Mas por que está fazendo o mesmo em caso de atualização?
Respostas:
Não tenho certeza da minha solução abaixo:
fonte
A funcionalidade que você está perguntando já está pronta
Magento\Checkout\Controller\Cart\UpdatePost
e é executada quando atualizamos o carrinho na página do carrinho do magento. Ele executa aupdateItems()
função deMagento\Checkout\Model\Cart
para atualizar itens naquote_item
tabela. É necessário parâmetro na forma de matriz$data ['item id of product']['attribute you want to update']
.Assim, você pode chamar
updateItems()
no carrinho modelo de objeto e passar os dados de acordo com atualizar items.Also se você não está recebendo id item que você pode obtê-lo como$this->cart->getQuote()->getAllItems()
e em seguida, chamargetItemId()
em cada item.fonte