【发布时间】:2018-12-27 08:29:40
【问题描述】:
当应用用户对一堆现有实体进行修改时,我必须保留新实体(可追溯性问题)。我在 Doctrine onFlush 事件上创建了一个 EventListener。问题是:这不应该在固定装置加载时发生。
我这样做是为了防止固定装置触发侦听器,但我想知道这是否是一个好的解决方案:
在我的services.yaml:
App\DataFixtures\:
class: App\DataFixtures\LoadFixtures
tags: [name: doctrine.fixture.orm]
arguments:
- '@doctrine.orm.default_entity_manager.event_manager'
在我的App\DataFixtures\LoadFixtures:
public function __construct(EventManager $eventManager)
{
$this->eventManager = $eventManager;
}
public function load(ObjectManager $manager)
{
$historizationManager = null;
foreach ($this->eventManager->getListeners() as $event =>$listeners){
foreach ($listeners as $key => $listener){
if($listener instanceof HistorizationManager){
$historizationManager = $listener;
}
}
}
if($historizationManager){
$this->eventManager->removeEventListener(array('onFlush'),$onFlushHistoryListener);
}
// doing some work
}
这是我提供的最简单的解决方案,如果有问题请告诉我。
【问题讨论】:
标签: doctrine event-listener fixtures