Sommaire

Les relations ManyToManyManyToMany

Nous allons gérer le cas où on peut avoir autant de relations qu’on souhaite entre la table propriétaire et la table inverse et réciproquement.

Cette fois, une colonne de jointure, comme précédemment, ne suffit pas. Pour ce type de relation, il faut créer une table de jointure intermédiaire entre les deux tables.

Rassurez-vous, Doctrine s’occupe de tout.

Nous allons créer une nouvelle entité Distributeur pour faire notre jointure.

Distributeur contiendra juste une propriété $nom.

php bin/console make:entity

Il faut répondre à la question

New property name : nom 
type : string 
length : 255

Il faut créer la migration :

php bin/console make:migration

puis migrer :

php bin/console doctrine:migrations:migrate

La relation ManyToMany entre l’entité Produit et l’entité Distributeur se fait comme pour la relation OneToOne, grâce aux annotations.

Dans l’entité Produit, ajoutez cette propriété :

    /** 
     * @ORM\ManyToMany(targetEntity="App\Entity\Distributeur",            cascade={"persist"} ) 
     * @ORM\JoinColumn(nullable=true) 
     */ 
    private $distributeurs;

Nous avons volontairement ajouté un « s » à ...