【发布时间】:2017-02-24 09:25:43
【问题描述】:
考虑 Symfony 应用程序的下一步:
- 为 Doctrine 的
postFlush事件注册侦听器,该事件转储工作单元getScheduledEntityInsertions()的结果。 - 创建 SomeEntity 类的实例。
- 使用之前创建的实体实例调用实体管理器的
persist和flush方法 -
postFlush监听器被解雇 -
getScheduledEntityInsertions()调用什么都不返回
预期的行为是,在最后一步我看到了插入实体的列表,但是如果您查看 UoF 的 executeInserts() 方法,则会为每个实体调用 unset($this->entityInsertions[$oid]),因此 getScheduledEntityInsertions() 调用不会返回任何内容。
我发现该案例被拒绝的补丁:https://github.com/doctrine/doctrine2/pull/5674 和 Ocramius 建议使用“onFlush”事件来收集所有需要的数据并触发自定义事件:https://groups.google.com/forum/#!topic/doctrine-user/GLJEx0p5kL4
但是,我不明白,如何做到这一点:如果我为 myCustomEvent 注册自定义侦听器并从 onFlush 触发它并列出未插入的实体 - 它将在实体实际保存到数据库之前执行(@ 987654334@ 已触发)并且无法从此侦听器中的数据库接收。
【问题讨论】:
标签: php symfony doctrine-orm doctrine