J'ai besoin de créer un journal des modifications dans l'API pour les actions utilisateur sur les entités.Enregistrement du résultat getEntityChangeSet() dans Doctrine EventListener
Par exemple:
entité des mises à jour de l'utilisateur Concédant je dois attraper les changements et les enregistrer dans la base de données différente table.
La première partie, j'ai pu faire avec la doctrine de l'événement Listener
class ChangelogEventListener
{
public function preUpdate($obj, PreUpdateEventArgs $eventArgs)
{
if ($obj instanceof LoggableInterface) {
dump($eventArgs->getEntityChangeSet());
}
}
}
Et avec les auditeurs d'événements d'entité de marquage
/**
* @ORM\EntityListeners(value={"AppBundle\EventSubscriber\Changelogger\ChangelogEventListener"})
*/
class Licensor implements LoggableInterface
Mais je ne sais pas s'il est même possible et si elle fait sens d'accéder au gestionnaire d'entités ORM dans un événement preUpdate
.
Si ce n'est pas le cas, quelle est la bonne façon de le faire?
J'ai essayé avec EventListener de Symfony au lieu de Doctrine mais je n'ai pas accès à getEntityChangeSet(
).
Puis-je appeler $ uow-> getEntityChangeSet(); à l'intérieur de la méthode onFlush est-il sécuritaire? – Robert
Vous devriez pouvoir oui. –
J'ai été capable de le faire sur les événements onFlush et postFlush parce que lorsque les objets ont été créés parce que je n'utilise pas uuid, je n'ai pas d'identifiants dans la méthode onFlush. J'accepterai votre réponse comme indiqué sur la bonne solution. Merci. – Robert