2011-03-04 172 views
1

我已經在Cakephp中籤出了交易,不幸的是,它看起來好像只適用於單個模型。我有一套複雜的更新和插入跨越11個模型。我將所有信息收集在一起,創建代表需要更新或插入的數據的關聯數組,並執行所有必要的Model-> save()調用。cakephp回滾交易

如果由於任何原因失敗了,我想回滾一切。僅僅保留所有調用的列表以及手動替換和手動「回滾」的舊數據,在CakePHP中是否支持這一點?或者什麼是完成這個最好的方法。使用CakePHP的交易

+0

我添加了編輯0瞭解更多信息。 – benjamin 2011-03-04 20:01:30

回答

3

斯蒂芬,

需要您的數據庫引擎支持事務。 也許this派上用場。 如果在一次運行中保存多個關聯模型是任務,那麼將saveAll的原子選項設置爲true即可。

編輯0:我不知道this有什麼好處嗎?

+0

這就是我之前看到的文檔,begin()函數要求我傳遞一個模型,當使用多個模型時,我會傳遞哪一個?並將該交易的所有mnodels,還是我需要做所有我使用的模型$ datasource-> begin(),然後在最後使用commit()和rollback()每個? – stephenbayer 2011-03-04 19:21:55

+1

如果所有模型都正確關聯,saveAll應該可以工作。如果不是這樣,交易的本質就是說,無論你在做什麼,一開始就有一個開始,最後一個提交或回滾。在cakephp的情況下,你不能套用交易。您的所有模型都應該可以通過您的數據源(例如存儲在同一數據庫中的模型數據)進行訪問。 – benjamin 2011-03-04 19:42:09

+0

gah,我的每日投票限額已經達到,這是忙碌的一天。我必須在幾個小時內投票給你。我使用的基礎模型,一切都建立了,租賃,所有其他模型相關聯,回滾和提交工作很好,謝謝。主席先生,歡迎您致電 – stephenbayer 2011-03-04 20:24:43