Détermination des champs modifiés dans les entités de Doctrine 2
Dans Doctrine 2, la gestion des modifications apportées aux champs d'entité est cruciale pour garantir l'intégrité des données. Pour résoudre ce problème, les développeurs sont souvent confrontés à la nécessité de déterminer quels champs au sein d'une entité ont été modifiés. Bien que la mise en œuvre manuelle soit une option, l'exploration des capacités intégrées de Doctrine peut simplifier ce processus.
Récupération des champs modifiés à l'aide d'EntityManager
Doctrine fournit EntityManager, accessible via $em , qui offre un moyen efficace de récupérer les champs modifiés. En utilisant la méthode getUnitOfWork, vous pouvez accéder à DoctrineORMUnitOfWork, désigné par $uow dans l'extrait de code ci-dessous.
$entity = $em->find('My\Entity', 1); $uow = $em->getUnitOfWork();
Calcul et récupération des ensembles de modifications
Pour Calculer les ensembles de modifications, qui représentent les champs modifiés, déclenche la méthode calculateChangeSets sur $uow. Ce calcul est facultatif si vous êtes dans un auditeur. Par la suite, récupérez l'ensemble de modifications spécifique à votre entité à l'aide de getEntityChangeSet($entity):
$uow->computeChangeSets(); $changeset = $uow->getEntityChangeSet($entity);
En tirant parti de la méthode getEntityChangeSet, vous accédez à un tableau contenant des paires clé-valeur où les clés représentent les noms de champs modifiés. , et les valeurs représentent les valeurs modifiées.
Considérations clés
Lors de l'utilisation de cette méthode dans un écouteur preUpdate, évitez de recalculer les ensembles de modifications car Doctrine a déjà effectué cette tâche. Au lieu de cela, exécutez simplement getEntityChangeSet pour obtenir les champs mis à jour.
Note d'avertissement
L'emploi de cette solution en dehors des écouteurs d'événements Doctrine doit être évité, car cela pourrait perturber le comportement habituel de Doctrine. . Par conséquent, cette approche est la mieux adaptée à des scénarios spécifiques au sein des écouteurs d'événements.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!