Doctrine : Retrouver la version originale de votre entité

J'ai eu récemment besoin de comparer une entité modifiée avec sa version originale, c'est-à-dire la version encore dans la base de données.

Voici donc comment faire :

<?php

// Création d'une copie de l'objet.
$original = clone $entity;
// On détache l'objet.
$em->detach($entity);
// On attache la copie.
$original = $em->merge($original);
// On demande à l'Entity Manager de réinitialiser l'entité.
$em->refresh($original);

// On a ici accès à l'original et à la version modifiée.

// On détache la copie.
$em->detach($original);
// On rattache la version modifiée.
$original = $em->merge($entity);