2015-09-28 32 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

相关问题