getObject(); if (!$entity instanceof User) { return; } if ($event->hasChangedField('login')) { $this->renameEntities[] = new RenameEventEntity($entity, $event->getOldValue('login')); } } /** TODO: try to avoid double flush or no? */ public function postFlush(PostFlushEventArgs $event): void { if (0 !== count($this->renameEntities)) { // Creating event for dispatch $usersRenamedEvent = new UsersRenamedEvent($this->renameEntities); $om = $event->getObjectManager(); foreach ($this->renameEntities as $item) { $om->persist($item); } $this->renameEntities = []; $om->flush(); $this->eventDispatcher->dispatch($usersRenamedEvent, UsersRenamedEvent::NAME); } } }