diff --git a/vendor/magento/module-quote/Model/ResourceModel/Quote/Item/Collection.php b/vendor/magento/module-quote/Model/ResourceModel/Quote/Item/Collection.php index 6e27625283bec..71e7cf0d72de1 100644 --- a/vendor/magento/module-quote/Model/ResourceModel/Quote/Item/Collection.php +++ b/vendor/magento/module-quote/Model/ResourceModel/Quote/Item/Collection.php @@ -393,12 +393,13 @@ private function removeItemsWithAbsentProducts(): void $productCollection = $this->_productCollectionFactory->create()->addIdFilter($this->_productIds); $existingProductsIds = $productCollection->getAllIds(); $absentProductsIds = array_unique(array_diff($this->_productIds, $existingProductsIds)); - // Remove not existing products from items collection if (!empty($absentProductsIds)) { - foreach ($absentProductsIds as $productIdToExclude) { - /** @var \Magento\Quote\Model\Quote\Item $quoteItem */ - $quoteItem = $this->getItemByColumnValue('product_id', $productIdToExclude); - $this->removeItemByKey($quoteItem->getId()); + $absentProductsLookup = array_flip($absentProductsIds); + $quoteItems = $this->getItems(); + foreach ($quoteItems as $quoteItem) { + if (isset($absentProductsLookup[(int)$quoteItem->getProductId()])) { + $this->removeItemByKey($quoteItem->getId()); + } } } }