magento $order->getAllItems() возвращает дважды один и тот же товар


Я пишу наблюдателю, который проверяет каждый элемент в заказе, в какой-то момент я получаю элементы

  foreach($order->getAllItems() as $item){
    //do something
    echo $item->getSku();
  }

  //output
  sku-first
  sku-first
  sku-second
  sku-second

Но я получаю дважды один и тот же товар с одним и тем же артикулом, конечно, в чем подвох? может быть, в каком-нибудь файле конфигурации?

Author: Infrid, 2011-10-24

3 answers

Я полагаю, что вы хотите использовать getAllVisibleItems() вместо getAllItems().

Я считаю, что getAllItems получает настраиваемый вместе со связанным с ним простым продуктом.

 13
Author: Josh Pennington, 2015-12-18 14:28:47

Опция getAllVisibleItems не работает

Вы должны использовать этот код

$_items = $order->getItemsCollection();

 foreach ($_items as $item) {
    if ($item->getParentItem()) continue;
    //do something
    echo $item->getSku();
}
 9
Author: lvillarino, 2015-12-18 14:29:46

Если getAllVisibleItems() не работает, убедитесь, что вы правильно его поняли:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
foreach ($cartItems as $item) {
    echo $item->getQty();
}

Источник: https://stackoverflow.com/a/5512656/922522

 2
Author: Justin, 2017-05-23 11:46:40