Ale*_*lex 5 php doctrine symfony doctrine-orm
考虑 Symfony 应用程序的后续步骤:
postFlush事件注册监听器,该事件转储getScheduledEntityInsertions()工作单元的结果。persist和flush方法postFlush 听众被解雇getScheduledEntityInsertions() 调用什么都不返回预期的行为是在最后一步我看到插入实体的列表,但是如果您查看executeInserts()UoF 的方法,则为unset($this->entityInsertions[$oid])每个实体调用,因此调用不返回任何内容getScheduledEntityInsertions()。
Iam 发现该案例的拒绝补丁:https : //github.com/doctrine/doctrine2/pull/5674和 Ocramius 建议使用“onFlush”事件收集所有需要的数据并触发自定义事件:https ://groups.google 。 com/forum/#!topic/doctrine-user/GLJEx0p5kL4
但是,我不明白,它是如何完成的:如果我注册自定义侦听器myCustomEvent并onFlush从未插入实体的列表中触发它- 它将在实体实际保存到数据库(postFlush触发)之前执行,并且无法从数据库中接收到听众。
一种可能的解决方案是为事件使用一个监听器类,onFlush并用必要的数据填充内部属性,从属性读取数据。但是这个解决方案有局限性:两个 listener-methods 必须定义同一个类;侦听器不是线程安全的。postFlushonFlushpostFlush
| 归档时间: |
|
| 查看次数: |
2856 次 |
| 最近记录: |