当其他实体被持久化或更新时,我需要持久化其他实体。因此,我创建了一个受这篇文章启发的解决方案:https ://stackoverflow.com/a/11054101/1526162 。
配置.yml:
services:
transaktion.chain:
class: Foo\BarBundle\Listener\Chain
transaktion.flush:
class: Foo\BarBundle\Listener\Flush
arguments: [ @doctrine.orm.entity_manager, @transaktion.chain ]
tags:
- { name: kernel.event_listener, event: kernel.response, method: onResponse, priority: 5 }
transaktion.listener:
class: Foo\BarBundle\Listener\TransaktionLogger
arguments: [ @transaktion.chain ]
tags:
- { name: doctrine.event_listener, event: postPersist }
- { name: doctrine.event_listener, event: postUpdate }
- { name: doctrine.event_listener, event: preRemove }
postPersist、postUpdate 和 preRemove 事件将信息添加到链中,最后,kernel.response 启动 Flush 并创建所需的附加实体。一切正常。
但是,当我在控制台命令中坚持实体时,它不起作用。我认为没有 kernel.response 事件。是否有其他有用的事件与控制器和控制台命令一起使用?
附加信息:我正在使用 Symfony 2.3