2012-07-29 49 views
0

當我按訂單號加載訂單時,返回的數組包含兩次相同的項目。Magento:爲什麼在這個變量中重複訂購的商品?

$order = Mage::getModel('sales/order')->loadByIncrementId(12345); 
$orderItems = $order->getItemsCollection(); 

如果訂單包含一個項目,然後,count($orderItems)將是2並且在每個陣列索引的內容將是idential。這是怎麼回事?

我嘗試了以下加載訂單,但它甚至沒有在Magento Enterprise 1.11.2.0上工作。

$order = Mage::getModel('sales/order')->load(12345); 
$orderItems = $order->getAllItems() 
+0

您確定該腳本沒有執行兩次,例如由於重寫規則錯誤或重定向?檢查你的網絡服務器日誌,看看它是否被擊中兩次。 – 2012-07-29 00:29:08

+0

嗯,我沒有在system.log中看到任何東西。執行兩次的腳本會如何導致這種情況? '$ order'的內容在創建時被複制。我已經嘗試在銷售確認頁面和PDF發票生成頁面上以這種方式加載訂單。在這兩種情況下,數組都在內容中被複制。所以,我現在正在做'if($ i%2 == 0)'來獲得獨特的項目,但我有一種感覺,當重複項不再存在時,這在某些時候肯定會失敗.. – musicliftsme 2012-07-29 00:58:02

回答

4

如果使用的是配置的產品,Magento的重複訂購sales_flat_order_item的數據庫表中的項目。

如果你使用$ order-> getAllVisibleItems(),你會得到你想要的。

+0

雖然它已經很久了我已經想通了,我會標記你的答案,以便它可以幫助別人。 '$ order-> getAllVisibleItems()'檢索前端和後端(admin)上顯示的所有項目。有關更多信息,請參閱'Mage_Sales_Model_Order :: getAllVisibleItems()'。 – musicliftsme 2014-01-28 01:32:18

相關問題