2015-05-20 73 views
0

這一直在困擾我一段時間。 在Doctrine2,我們有:ObjectManager功能:ORM/Doctrine2 - 何時堅持?

void persist(object $object = null) 

你只需要調用它的新的實體。

雖然我的問題是「何時」應該被稱爲?在創建實體後立即或在沖洗之前立即執行?

我找不到任何文件說明約定。這一點很重要的原因是因爲教義在調用時派遣「堅持事件」。

鑑於對象可能仍然是空的,這似乎意味着標記到該事件的任何功能都應該忽略該對象在該時間點包含的數據的重要性。

我在那個陳述中是否正確,或者是否存在一個傳統的學說?

回答

1

你想要做的就是創建你的新對象,無論如何都要使用它,當你完成它並想將它發送到數據庫時,然後在沖洗它之前堅持它。

如果您在創建實體後立即保留實體,則在發送到數據庫時,您所做的任何更改都不會被考慮在內。

+0

這實際上符合我的理念,即對象應該在執行的最後才被刷新。但這個答案提出的另一個可能與我自己的方法相矛盾的問題是服務創建的對象。我已經嘗試過這樣一個想法,即對象應該只被頂層代碼持久化,類似於需要內存的過程負責釋放它的C程序。這對你有意義嗎? – Flosculus

+0

我不覺得必須從代碼的頂層持久保存對象,您可以創建用於創建和保留對象的服務。這本書(http://symfony.com/doc/current/book/service_container.html)給出了一個持久對象服務的例子,所以我猜這不是一件壞事。您只需使用面向服務的體系結構。 –