【发布时间】:2012-01-02 14:08:27
【问题描述】:
我正在阅读:http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html
以这种方式使用 Doctrine 事件侦听器似乎有点浪费,因为我不能只定义要侦听的特定实体,而必须在侦听器类中检查实体的类。这似乎是一种浪费。有没有办法指明要监听的特定实体?
【问题讨论】:
标签: symfony doctrine-orm
我正在阅读:http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html
以这种方式使用 Doctrine 事件侦听器似乎有点浪费,因为我不能只定义要侦听的特定实体,而必须在侦听器类中检查实体的类。这似乎是一种浪费。有没有办法指明要监听的特定实体?
【问题讨论】:
标签: symfony doctrine-orm
没有。您需要在侦听器的顶部包含此逻辑。这通常是 instanceof 检查:
public function prePersist($eventArgs)
{
// i.e. using the MongoDB ODM
$doc = $eventArgs->getDocument();
if (!$doc instanceof MyModel) {
return;
}
}
【讨论】:
从 Doctrine 2.4 开始,您可以使用 Entity listeners,它们仅针对特定实体类型调用。
【讨论】: