Doctrine,如何处理多次flush()

时间:2017-08-02 06:04:08

标签: php symfony doctrine-orm doctrine

在我的Symfony 2应用程序中,我按以下顺序排列以下场景:

  1. 在我的控制器中,我对一个托管实体做了一些编辑(即从db中重新获取或持久保存到实体管理器)
  2. 如果发生了什么事,在我的控制器中(或从容器中获取的外部服务)我在其他实体中进行其他编辑,或者我 实现一些新实体。我想冲洗这些操作 (仅在第2点描述的这些)立即
  3. 如果发生其他事情,我想编辑其他一些实体,我想要清除(1)和(3)中所做的更改。否则,我不想清除(1)和(3)中所做的更改
  4. 有没有办法在Doctrine中执行此操作,例如:同时管理多个工作单元或类似的东西?否则我正在查看这个http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#update-queries,即对点(2)中的每个更新进行单个查询,对于点(2)中的插入进行此http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html#sql-query-builder,但我想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:1)

您可以detach您想要冲洗的实体并致电$em->flush();

$em->detach($entity);

答案 1 :(得分:1)

您可以拆分"系统"实体和"程序"实体并使用2个连接。看看here