2011-10-24 25 views
6

我正在寫一個順序檢查每一個項目的觀察員同一項目,在某些時候,我得到的物品

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

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

,但我得到兩次相同與當然sku的項目,當然,捕獲?也許在一些配置文件?

回答

11

我相信你想用getAllVisibleItems()而不是getAllItems()

我相信getAllItems可以配置其相關的簡單產品。

+0

Magento 1.8.x上的getAllVisibleItems工作正常。 TKS! – medina

8

選項getAllVisibleItems不工作

你必須使用此代碼

$_items = $order->getItemsCollection(); 

foreach ($_items as $item) { 
    if ($item->getParentItem()) continue; 
    //do something 
    echo $item->getSku(); 
} 
+0

'getAllVisibleItems'在內部檢查該項目沒有parent_item_id,所以如果它不適合你,那麼其他的東西是錯誤的。 – kojiro

2

如果getAllVisibleItems()不能正常工作,請確保您正確地得到它:

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

來源:https://stackoverflow.com/a/5512656/922522