【发布时间】:2017-08-02 06:04:07
【问题描述】:
在我的 Symfony 2 应用程序中,我有以下场景,按以下顺序:
- 在我的控制器中,我对托管实体进行了一些编辑(即从 db 检索或持久化到实体管理器)
- 如果发生了什么事,在我的控制器中(或在从容器获取的外部服务中)我在其他实体中进行一些其他编辑,或者我 实例化一些新实体。我想刷新这些操作 (仅在第 2 点描述)立即
- 如果发生其他情况,我想编辑一些其他实体,并且我想刷新在 (1) 和 (3) 中所做的更改。否则,我不想刷新 (1) 和 (3) 中所做的更改
在 Doctrine 中有没有办法做到这一点,例如同时管理多个工作单元或类似的东西?否则,我正在查看此http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#update-queries,即针对第 (2) 点所做的每个更新的单个查询和此 http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html#sql-query-builder 针对第 (2) 点所做的插入,但我想知道是否有更好的方法。
【问题讨论】:
-
“最佳”方法是根本不使用 orm。您可以考虑使用两个实体管理器。你也可以这样做 $em->flush($entity);但同样,任何时候你尝试“开箱即用”orm,你都会遇到问题。
-
@Cerad 我想我会尝试使用两个 em。搜索谷歌并查看方法的文档,
$em->flush($entity);似乎弊大于利。
标签: php symfony doctrine-orm doctrine