2015-09-28 31 views
0

我使用的是Doctrine ORM 2.5。我想知道在嘗試插入\更新\刪除實體時是否需要在$entityManager->beginTransaction()$entityManager->commit()以外包裝$entityManager->flush()以外的任何東西。因爲在Doctrine's Docs中,其他語句(如$user = new User())也包含在交易調用中。Doctrine Transactions Boundary

回答

0

不,應該是細到只有包括在beginTransaction沖洗()和(作爲您使用相同的實體管理器執行所有操作之前,只要課程)提交語句

但是,如果這是你的唯一「打電話「爲什麼要標記交易界限? 那麼你想通過設置交易界限來達到什麼目的?

+0

用例是:我有多個實體管理器,並且應該回滾所有這些實體的更改,以防其中一個遇到錯誤。 – user2268997

+0

你有什麼消息來源陳述? – user2268997

+0

這就是爲什麼我寫'只要你使用相同的實體經理',我不能說任何涉及多個實體經理的行爲有效。源代碼是官方教義文檔(請參閱您自己的鏈接),告訴'flush'隱式地啓動一個事務,並在發生任何事情時執行UnitOfWork中的任何語句(按其特定順序等)並進行回滾。 – LBA

相關問題