Maison > développement back-end > tutoriel php > Comment implémenter correctement la cascade de suppression dans Doctrine2 ?

Comment implémenter correctement la cascade de suppression dans Doctrine2 ?

Susan Sarandon
Libérer: 2024-11-04 04:30:29
original
1000 Les gens l'ont consulté

How to Properly Implement On Delete Cascade in Doctrine2?

Doctrine2 : Comprendre la cascade de suppression

Le concept de cascade de suppression dans Doctrine2 permet la suppression automatique des enregistrements enfants lorsque l'enregistrement parent est supprimé. Cette fonctionnalité garantit l'intégrité des données en maintenant l'intégrité référentielle.

Implémentation de la cascade de suppression dans Doctrine2

Pour implémenter la cascade de suppression, il existe deux approches :

  1. Niveau de mappage objet-relationnel (ORM) :

    • Spécifiez cascade={"remove"} dans l'association au sein de l'entité enfant.
    • Cela demande à Doctrine de supprimer tous les objets enfants associés lorsque l'objet parent est supprimé. Cependant, cela n'affecte pas la structure de la base de données.
  2. Niveau de base de données :

    • Ajouter onDelete="CASCADE" à la colonne de jointure de l'association dans l'entité enfant.
    • Cela crée une contrainte de base de données qui supprime automatiquement les enregistrements enfants lorsque l'enregistrement parent référencé est supprimé.

Corriger vos entités

Dans votre exemple, vous avez utilisé l'approche au niveau ORM mais vous avez manqué l'attribut onDelete="CASCADE" sur la colonne de jointure. Pour corriger cela, modifiez l'entité Child.php comme suit :

<code class="php">/**
 * @ORM\ManyToOne(targetEntity="Father", cascade={"remove"})
 * @ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE")
 *
 * @var Father
 */
private $father;</code>
Copier après la connexion

注意事項

  • La cascade au niveau ORM cascade={"remove" } tel qu'actuellement implémenté supprimera également l'objet parent lorsqu'un objet enfant est supprimé. Ce n'est généralement pas souhaité.
  • Par conséquent, il est recommandé d'utiliser la cascade au niveau de la base de données avec onDelete="CASCADE" pour un meilleur contrôle du comportement de suppression.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal