2

私は本当に簡単なことをしようとしています - 注文からアイテムを取得します。これには、Magento 1.7 が提供する 3 つの機能があるようです。

  • getAllItems() : これはすべての項目を 2 回返します。返される項目は単純なタイプです (構成不可)
  • getItemsCollection() : 同上
  • getAllVisibleItems() : 同上

私が他の場所で読んだ回答の多くは、この問題が「親」製品と「子」製品によって引き起こされていることを示していますが、私の DB にはありません。親子関係を定義するテーブルを確認しましたが、どちらも空です。

これが私が実行しているコードです:

        $order = Mage::getModel("sales/order")->load($order_id, 'increment_id'); //load order by order id

        $ordered_items = $order->getAllVisibleItems();
        //$ordered_items = $order->getAllItems();
        //$ordered_items = $order->getItemsCollection();

        foreach($ordered_items as $item)
        {
            if($this->debug)
            {
                echo $item->getItemId()."</br>";
                echo $item->getProductId()."</br>";
                echo $item->getSku()."</br>";
                echo $item->getQtyOrdered()."</br>";
                echo $item->getName()."</br>";
            }

            echo("*************************************************</br>");

        }

And the output is 
6
934
1003
1.0000
ProductA
*************************************************
6
934
1003
1.0000
ProductA
*************************************************

ご覧のとおり、出力された最初の図は実際の entity_id です。つまり、同じアイテムの実際の重複を取得していますか?

4

1 に答える 1

6

このコードを使用する必要があります

$order = Mage::getModel("sales/order")->load($order_id, 'increment_id');
$_items = $order->getItemsCollection();

 foreach ($_items as $item) {
    if ($item->getParentItem()) continue;
    //do something
    echo $item->getSku();
}
于 2013-12-10T00:46:28.077 に答える