2012-08-23 103 views
0

如何獲取Magento中的最後訂單狀態?如何獲取magento中的所有最後訂單狀態?

例如一個訂單可能有多個狀態,但我想獲得最後一個狀態訂單的狀態。 1.Pending => 2.processing => 3。 完整

$myOrder=Mage::getModel('sales/order'); 
$orders=Mage::getModel('sales/mysql4_order_collection'); 
$orders->addFieldToFilter('status',array('in'=> array('processing', 'processed', 'pending fullfilment'))); 



$orders->addFieldToFilter('store_id',array("in" => array('8', '9'))); 

$orders->addAttributeToSort('created_at', 'asc'); 

$allIds=$orders->getAllIds(); 

print_r($allIds).'</br></br>'; 

foreach($allIds as $thisId) { 
... 
} 

回答

0

應該實際上很簡單:

$status = Mage::getModel('sales/order')->getCollection() 
    ->setOrder('entity_id', Varien_Data_Collection::SORT_ORDER_DESC) 
    ->getFirstItem() 
    ->getStatus(); 

注意statusstate是兩個稍微不同的領域,你可能要仔細檢查,並確保你右拉一個爲您的需求。

+0

並沒有爲我工作,我認爲我們必須使用的,而不是ORDER_ID increment_id,是你的意思? –

+0

此代碼是錯誤的,並沒有爲我工作,所以我downvoted。 - > addFieldToFilter('order_id','DESC')這實際上不需要是某種順序?另外我不能看到一個字段的標識符order_id。這對我來說是個例外。你測試了什麼版本的magento?如果這是我的錯誤,我很高興upvote –

+0

對不起,我寫這個沒有測試它。我認爲適當的字段名稱是'entity_id',正如德魯在他的回答中提到的。 – kalenjordan

3

訂購您的收藏的兩個最明顯的字段將是entity_id或c reated_at。儘管幾乎所有情況下,你都應該看到每個人都有相同的結果。

通過ENTITY_ID

$status = Mage::getModel('sales/order')->getCollection() 
    ->setOrder('entity_id', Varien_Data_Collection::SORT_ORDER_DESC) 
    ->getFirstItem() 
    ->getData('status') 
; 

通過created_at

$status = Mage::getModel('sales/order')->getCollection() 
    ->setOrder('created_at', Varien_Data_Collection::SORT_ORDER_DESC) 
    ->getFirstItem() 
    ->getData('status') 
; 
+0

感謝您的回覆,我沒有15的聲望給你評分。但entity_id不是order_id,我們仍然得到相同的結果 –

+0

entity_id是訂單在記錄在數據庫中時給予的ID。這與增量ID不一樣。我不建議你使用增量ID來訂購你的收藏,因爲它不會總是按順序運行。使用entity_id或created_at,如示例中所示 –

相關問題