Framework Symfony

Doctrine2 - Introduction

Lors du mappage des associations bidirectionnelles, il est important de comprendre le concept de cotés possédants et les côtés inverses. Les règles générales suivantes sont applicables:

  • Les relations peuvent être unidirectionnelle ou bidirectionnelle.
  • Une relation bidirectionnelle possède à la fois un côté possédant et un côté inverse
  • Une relation unidirectionnelle ne dispose que d'un côté propriétaire.
  • Doctrine ne vérifie que le côté possédant d'une association pour les changements.

1-Associations bidirectionnelles

Les règles suivantes sont applicables aux associations bidirectionnelles:

  • Le côté inverse doit utiliser l'attribut mappedBy dans la déclaration de OneToOne, OneToMany ou ManyToMany. L'attribut mappedBy contient le nom de l'association de champ sur le côté propriétaire.
  • Le côté possédant doit utiliser l'attribut inversedBy dans la déclaration de OneToOne, ManyToOne ou ManyToMany. L'attribut inversedBy contient le nom de l'association de champ sur l'inverse côté.
  • ManyToOne est toujours le côté possédant de l'association bidirectionnelle.
  • OneToMany est toujours le côté inverse de l'association bidirectionnelle.
  • Le côté possédant d'une association OneToOne est l'entité avec la table contenant la clé étrangère.
  • Vous pouvez choisir le côté possédant d'une association many-to-many.

2-Concepts importants

Doctrine ne vérifie que le côté possédant de l’association pour appliquer les changements.

Pour bien comprendre cela, rappelez-vous comment les associations bidirectionnelles sont maintenues dans le monde de l'objet. Il y a 2 références de chaque côté de l'association et ces 2 références représentent tous les deux de la même association, mais peuvent changer indépendamment l'un de l'autre. Doctrine a besoin de savoir lequel de ces deux références en mémoire est celui qui devrait être persisté.

Les modifications apportées pour le côté inverse d'une association sont ignorées. Assurez-vous de mettre à jour les deux côtés d'une association bidirectionnelle (ou au moins du côté possédant, du point de vue de la doctrine).

Doctrine regarde dans le coté possédant au moment de détermination de l’état de l’association et par conséquent de savoir s'il y a quelque chose à faire pour mettre à jour l'association dans la base de données.

« Côté Possédant » et « côté inverse » sont des concepts techniques de la technologie ORM, et non pas des concepts de votre modèle. Ce que vous considérez comme le côté possédant dans votre modèle peut être différent de ce que le côté propriétaire est pour Doctrine. Ceux-ci ne sont pas liés.

Partager ce cours avec tes amis :
 
Rédigé par Mostafa Sedoki
Professeur d'Informatique dans les CPGE

Cours Similaires :