我有一个实体 BaseInformation
/**
* @ORMEntity
* @ORMEntityListeners({"AppBundleEntityListenerBaseInformationListener"})
* @ORMTable(name="BaseInformation")
*/
class BaseInformation
{ ...
因此,我有一个EntityListener
/**
* Class BaseInformationListener
* @package AppBundleEventListener
*/
class BaseInformationListener
{
/**
* @ORMPreUpdate
*
* @param BaseInformation $baseInformation
* @param PreUpdateEventArgs $event
*/
public function preUpdateHandler(BaseInformation $baseInformation, PreUpdateEventArgs $event)
{
dump($baseInformation);
dump($event->getEntityChangeSet());
}
}
我需要将ChangeSet
保存到数据库中。但是我无法访问EntityManager
。我可以从中提供服务,但是听众会自动对实体的注释进行调用。那么,如何可以访问EntityManager
来保存我的ChangeSet
?
您可以定义侦听器并将其标记为EntityListener,因此您可以使用通常需要的依赖项:
services:
base_information_listener:
class: AppBundleEntityListenerBaseInformationListener
arguments: ['@doctrine.orm.entity_manager']
tags:
- { name: doctrine.orm.entity_listener }
学说2.5您还需要在相关实体中使用注释(如文档中所述)。
希望此帮助