我遇到了一個主要處理可配置產品銷售的Magento商店的一個有趣問題。我有一些代碼將訂單信息打包併發送到外部倉庫,然後完成訂單。有了這個請求,我使用increment_id
作爲標識符。我們定期向倉庫詢問訂單是否已發貨,如果他們報告,我們會通過increment_id
檢索Magento中的訂單,並通過創建新的貨件來完成訂單。在使用可配置產品編輯訂單後,通過increment_id檢索Magento中的單個訂單
現在,這工作正常,直到訂單編輯。由於Magento處理可配置產品,編輯訂單涉及取消當前訂單並使用相同的increment_id
重新創建。隨後,現在基礎上,increment_id
我的相互作用化爲泡影,因爲只有第一(取消)順序出現,當我做這樣的事情要檢索,爲increment_id
不再是唯一的:
<?php
$order = Mage::getModel('sales/order')->loadByIncrementId(100000001);
?>
通常情況下,有重複increment_id
是不可能的,所以我會期望Magento優先考慮'主動'訂單,但事實並非如此。現在
,我找到了一種方法來解決這個問題有一個集合:
<?php
$orders = Mage::getModel('sales/order')
->getCollection()
->addAttributeToFilter('state', array('neq' => Mage_Sales_Model_Order::STATE_CANCELED))
->addAttributeToFilter('increment_id', 100000001);
foreach ($orders as $order) {
// Do what we need with the order
}
?>
不過,我很想知道,如果有一種方法,從收集得到的只是一個記錄後面,否定需要爲foreach
。這可以做到嗎?
我顯然需要RTFM更密切一點。這是完美的,謝謝! – CVM 2011-04-28 15:19:29