Post

Symfony – Les relations ManyToMany

Symfony – Les relations ManyToMany

Cours 18 — Les relations ManyToMany

Introduction

Une relation ManyToMany permet de relier plusieurs objets entre eux.

Exemple :

1
2
3
Médecin
↕
Spécialité

Un médecin peut avoir plusieurs spécialités.

Une spécialité peut concerner plusieurs médecins.


Créer la relation

Commande :

1
php bin/console make:entity

Puis :

1
New property name:

Exemple :

1
specialites

Type :

1
relation

Puis :

1
ManyToMany

Exemple

1
2
#[ORM\ManyToMany(targetEntity: Specialite::class)]
private Collection $specialites;

Ajouter un objet

1
$medecin->addSpecialite($specialite);

Supprimer un objet

1
$medecin->removeSpecialite($specialite);

Lire la relation

1
$specialites = $medecin->getSpecialites();

Résultat :

1
Collection de spécialités.

Parcourir les résultats

1
2
3
foreach ($specialites as $specialite) {
    echo $specialite->getLibelle();
}

Comprendre le schéma

1
2
3
4
5
6
7
8
9
10
11
Médecin 1
    ↕
Cardiologie

Médecin 1
    ↕
Médecine générale

Médecin 2
    ↕
Cardiologie

Conclusion

Une relation ManyToMany permet :

  • plusieurs objets vers plusieurs objets ;
  • l’ajout avec add...() ;
  • la suppression avec remove...() ;
  • la lecture avec get...().

Doctrine crée automatiquement la table de liaison nécessaire.

This post is licensed under CC BY 4.0 by the author.