【发布时间】:2020-08-12 06:31:22
【问题描述】:
我有事件订阅者,它正在监听教义事件:
return [
Events::postPersist,
Events::postUpdate,
Events::postRemove,
];
它工作正常,但我需要的是在特定的应用程序操作(从命令调用)中禁用此事件以触发订阅者。 我的想法是以某种方式检测从哪个范围调用flush(),有没有像debug_backrace()(我不想使用obv。)这样的方法来检测应用程序的上下文?
【问题讨论】:
-
你为什么需要那个?由于您的订阅者是普通服务:为什么不向它添加一个标志,将服务注入您的命令,然后从该命令设置该标志?
-
@NicoHaase 这是因为我需要在每次更新/持久化/删除任何实体时触发此订阅者,但仅在此特定操作中(命令调用 updateService,它正在调用多个其他正在操作更新对象的类)我不想触发这个订阅者
-
那你有什么办法解决这个问题?我的第一条评论对你有帮助吗?
-
我明白了,我试过了,效果很好,谢谢你的帮助,我没有意识到,订阅者仍然只是一个服务
标签: symfony doctrine-orm subscriber