Magento 2: Получите количество добавленного товара в корзину


Я хочу получить общее количество товаров, добавленных в корзину, по идентификатору продукта. Я использую класс \Magento\Checkout\Model\Cart, чтобы получить все товары в корзине.

$items = $cart->getQuote()->getAllItems();

foreach ($items as $item) {
    if ($item->getProductId() == '101') {
        return $item->getQty(); //Get product qty
    }
}

Это приведет к добавлению количества товара в корзину. Но если у меня в корзине 30 товаров, это повторится 30 раз.

Есть ли какой-либо способ получить количество одного товара без зацикливания всех товаров из корзины?

Любая помощь приветствуется!

Author: Prince Patel, 2017-07-06

3 answers

Вы можете напрямую получить общее количество quote без использования foreach, используя этот метод

$quote->getItemsQty();

Если вы хотите зарегистрировать объект order, то вы можете получить его,

$order->getTotalQtyOrdered()

Где $quote - объект Magento\Quote\Model\Quote и

$order является Magento\Sales\Model\Order объектом.

 4
Author: Keyur Shah, 2018-12-06 10:09:54
//add code in list.phtml
<div>
    <?php
    $IdDoProduto = $_product->getId();
    $cart = $this->helper('\Magento\Checkout\Helper\Cart');
    $itens = $cart->getQuote()->getItems();

    foreach ($itens as $item){
        if($IdDoProduto == $item->getProduct_id()){
            echo $item->getQty();
        }
    }
    ?>
</div>
 1
Author: Silas Pita, 2019-06-06 19:08:51

Вы можете получить количество товара из приведенного ниже кода, он проверит наличие товара в текущей коллекции товаров и вернет количество, если товар доступен...

$items = $cart->getQuote()->getAllItems();
$productId="your_product_id";
foreach ( $items as $item) {
        if ($item->getProductId() == $productId) {
            return $item->getQty();
        }
    }
 0
Author: Emipro Technologies Pvt. Ltd., 2017-07-06 07:25:18