2013-07-04 110 views
2

我正在處理一個訂單導入到magento的連接器。爲了提高性能,我只想加載之前未加載的訂單。這不會有問題,只需保存訂單ID即可。但是如果有變化,例如在magento後端更改了帳單地址,或者訂單狀態設置爲另一個,則不會被識別。Magento:如何檢查價值是否已經改變了訂單

我的想法是尋找一個「updated_at」列,我期望Magento每次更新此值,如果根據訂單有任何更改 - 無論如何,如果是訂單狀態或結算/送貨地址。

幸運的是有一個updated_at列,但是如果我更改帳單地址,例如新的日期未設置爲updated_at列。我的新billing_1可通過「sales_flat_order_grid」和「sales_flat_order_address」表中的「phpMyAdmin」找到。在第一個中還有一個updated_at列(它也包含舊值,而不是真正的「更新時間」),第二個列中沒有updated_at列。

整個訂單是否有「更新在」列?我知道,我可以用magento事件,mysql觸發器或覆蓋負責任的magento類來做類似的事情,但我更喜歡用標準的Magento安裝來完成它。

謝謝! :)

+0

檢查'sales_flat_order.updated_at'。 –

+0

我已經看過這個字段,但編輯現有訂單後價值沒有更新:-( –

回答

1

我會通過isDirty()檢查模型。由於這種方法是在Varien_Object你應該很好走...

祝你好運!

+0

謝謝!怎麼可能設置「isDirty」標誌?我已經試過了,但isDirty總是返回「false 「 –

+0

你不需要設置它髒的時候它的髒(改變) –

+0

嗯,不幸的是我不知道isDirty()狀態是如何工作的我的測試訂單(其中賬單地址名已被我手動更改後端)顯示'isDirty = false' ...如果有變化,我該如何識別?是不是總是「假」?如果不能設置,我會如何看到進一步的變化? –

0

我檢查了Varient_Object的源代碼,似乎它不會在您設置某些屬性時自動設置。相反,您必須明確地調用:flagDirty($field, $flag=true)

被修改: 不幸的是,即使flagDirty()方法也不起作用。 _dirty字段從不初始化。看起來這是一個錯誤。

但是,您可以改爲使用hasDataChanges()。

相關問題