我有一个实体BaseInformation
/**
* @ORM\Entity
* @ORM\EntityListeners({"AppBundle\EntityListener\BaseInformationListener"})
* @ORM\Table(name="BaseInformation")
*/
class BaseInformation
{ ...
因此我有EntityListener
/**
* Class BaseInformationListener
* @package AppBundle\EventListener
*/
class BaseInformationListener
{
/**
* @ORM\PreUpdate
*
* @param BaseInformation $baseInformation
* @param PreUpdateEventArgs $event
*/
public function preUpdateHandler(BaseInformation $baseInformation, PreUpdateEventArgs $event)
{
dump($baseInformation);
dump($event->getEntityChangeSet());
}
}
我需要将ChangeSet
保存到数据库中。但我无法访问EntityManager
。我可以从中提供服务,但是监听器会自动调用实体中的注释。那么,如何才能访问EnttiyManager
以保存我的ChangeSet
?
答案 0 :(得分:1)
您可以将侦听器定义为服务并将其标记为EntityListener,以便您可以使用通常需要的依赖项:
services:
base_information_listener:
class: AppBundle\EntityListener\BaseInformationListener
arguments: ['@doctrine.orm.entity_manager']
tags:
- { name: doctrine.orm.entity_listener }
在学说2.5之前,您还需要在相关实体中使用注释(as described in the doc)。
希望这个帮助