【问题标题】:Is there a way to specify Entity for a Doctrine event listener?有没有办法为 Doctrine 事件监听器指定实体?
【发布时间】:2012-01-02 14:08:27
【问题描述】:

我正在阅读:http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html

以这种方式使用 Doctrine 事件侦听器似乎有点浪费,因为我不能只定义要侦听的特定实体,而必须在侦听器类中检查实体的类。这似乎是一种浪费。有没有办法指明要监听的特定实体?

【问题讨论】:

    标签: symfony doctrine-orm


    【解决方案1】:

    没有。您需要在侦听器的顶部包含此逻辑。这通常是 instanceof 检查:

    public function prePersist($eventArgs)
    {
        // i.e. using the MongoDB ODM
        $doc = $eventArgs->getDocument();
        if (!$doc instanceof MyModel) {
            return;
        }
    }
    

    【讨论】:

    • 看起来很浪费,不是吗?当我只需要一个实体时,就可以在每个实体上调用它。
    • 在上游添加这个逻辑只会增加复杂性,并没有真正的性能提升。
    【解决方案2】:

    从 Doctrine 2.4 开始,您可以使用 Entity listeners,它们仅针对特定实体类型调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      相关资源
      最近更新 更多