


Doctrine2 : Comment implémenter On Delete Cascade pour une maintenance transparente de la base de données ?
Nov 03, 2024 pm 06:16 PMDoctrine2 : Comprendre la suppression en cascade
Pour une maintenance transparente de la base de données, il est souvent nécessaire de supprimer automatiquement les enregistrements enfants lorsque l'enregistrement parent correspondant est supprimé . Doctrine2 prend en charge cette fonctionnalité via « On Supprimer Cascade », une fonctionnalité qui garantit que les enregistrements enfants sont supprimés lorsque leur parent l'est.
Exemples d'entités
Considérez les entités suivantes :
<code class="php">class Child { /** @ORM\ManyToOne(targetEntity="Father", cascade={"remove"}) */ private $father; } class Father { /** @ORM\Id @ORM\GeneratedValue */ private $id; }</code>
Le problème : cascade de base de données manquante
Alors que le code établit une relation entre l'enfant et le père avec une cascade de « suppression », la base de données n'a pas l'option « Sur suppression Contrainte Cascade".
Solution : Cascade au niveau de la base de données
Pour implémenter true On Delete Cascade, ajoutez onDelete="CASCADE" à la colonne de jointure de l'enfant :
<code class="php">/** @ORM\JoinColumn(name="father_id", referencedColumnName="id", onDelete="CASCADE") */</code>
Ceci précise que lorsqu'une ligne est supprimée de la table Père, toutes les lignes correspondantes de la table Enfant seront automatiquement supprimées.
Attention : Comprendre Cascades
Il est important de noter la distinction entre les cascades au niveau ORM et au niveau de la base de données. Les cascades au niveau ORM fonctionnent au sein de UnitOfWork de Doctrine et n'affectent pas la structure de la base de données, tandis que les cascades au niveau de la base de données créent des contraintes physiques dans la base de données. Dans l'exemple actuel, cascade={"remove"} est une cascade au niveau ORM qui déclenchera une suppression récursive dans UnitOfWork, mais cela n'entraînera pas le comportement souhaité de la base de données.
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

11 meilleurs scripts de raccourcissement d'URL PHP (gratuit et premium)

Travailler avec les données de session Flash dans Laravel

Misque de réponse HTTP simplifié dans les tests Laravel

Construisez une application React avec un Laravel Back End: Partie 2, React

Curl dans PHP: Comment utiliser l'extension PHP Curl dans les API REST

12 meilleurs scripts de chat PHP sur Codecanyon
