我已按照本教程中的说明进行操作: http: //symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html,并创建了一个简单的侦听器,用于侦听 Doctrine 在插入或更新实体时调度的事件. preInsert 和 postInsert 事件工作正常,并在创建新实体时分派。但是,无论如何,在实体的更新上都不会调用 preUpdate 和 postUpdate。onFlush 也是如此。作为旁注,我有一个控制台生成的控制器,它支持基本的 CRUD 操作,并且保持不变。
下面是一些代码片段来演示我这样做的方式。
配置.yml
annotation.listener:
class: City\AnnotatorBundle\Listener\AnnotationListener
tags:
- { name: doctrine.event_listener, event: postUpdate}
监听器实现(为了简单起见,我省略了其他函数,只留下了 postUpdate)
class AnnotationListener
{
public function postUpdate(LifecycleEventArgs $args)
{
$entity=$args->getEntity();
echo $entity->getId();
die;
}
}
实体 id 永远不会显示,并且脚本会继续执行直到它完成,尽管函数结束时死亡。