[英]Get flushed entities on Doctrine postFlush event
考虑Symfony应用程序中的后续步骤:
postFlush
事件的监听器, postFlush
事件转储工作单元的getScheduledEntityInsertions()
的结果。 persist
和flush
方法 postFlush
监听器被解雇了 getScheduledEntityInsertions()
调用什么都不返回 预期的行为是,在最后一步,我看到了插入实体的列表,但是如果你看一下UoF的executeInserts()
方法,则为每个实体调用unset($this->entityInsertions[$oid])
,以便从getScheduledEntityInsertions()
返回nothig getScheduledEntityInsertions()
打电话。
Iam发现该案件拒绝补丁: https : //github.com/doctrine/doctrine2/pull/5674和Ocramius建议使用“onFlush”事件来收集所有需要的数据并解雇自定义事件: https ://groups.google 。 COM /论坛/#!话题/学说用户/ GLJEx0p5kL4
但是,我不明白,它是如何完成的:如果我为myCustomEvent
注册自定义侦听器并从onFlush
使用未插入实体列表触发它 - 它将在实体实际保存到数据库之前执行( postFlush
触发)并且无法从此侦听器中的数据库。
一种可能的解决方案是在onFlush
和postFlush
事件中使用一个Listener类,在onFlush
使用必要的数据填充内部属性,在postFlush
从属性中读取数据。 但是这个解决方案有局限性:两个侦听器方法都必须定义为相同的类; 监听器不是线程安全的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.