Symfony2:删除最后一个孩子时删除父实体

时间:2013-04-01 08:46:58

标签: symfony

我有父(注册)和子(参与者)实体。当我删除父项的最后一个子项时,我也想删除父项。为此我使用postRemove生命周期事件是有道理的,但是我找不到从实体访问实体管理器的方法(我也不确定)。什么是实现这个目标的正确方法?

1 个答案:

答案 0 :(得分:2)

不,你不应该从Entity访问EntityManager,这根本就是错误的。

我看到的第一个选项是在postRemove的{​​{1}}中触发一个事件。 然后使用一个事件订阅者,它会注入Participant并完成工作。 您可以将参与者或注册作为事件参数附加,无论您最喜欢什么。

编辑:实际上,我使用Symfony的事件调度程序/订阅者是错误的,而是使用Doctrine的事件侦听器/订阅者。使用Symfony的事件时,您仍然需要将调度程序注入实体。此外,Doctrine已经发布了一个事件,并且复制它会很混乱。

诀窍是将侦听器注册为服务,并将其标记为EntityManager。这样,您可以通过事件对象访问实体,通过注入获取实体管理器,所有操作都在实体外部完成。 More info at Symfony cookbook