Sommaire

Les Relations bidirectionnellesrelations bidirectionnelles

Nous avons toujours défini dans nos jointures une table prioritaire et une table inverse, ce qui signifie qu’il n’y a pas de réciprocité.

Dans la jointure, on part toujours d’une table (la table Prioritaireprioritaire) pour aller chercher des informations dans la table Inverseinverse.

Que se passe-t-il si on souhaite faire l’inverse ?

Exemple : avec la jointure ManyToMany précédente, on souhaite créer une vue qui liste les marques des distributeurs et qui donne, pour chacun d’eux, les noms des produits qu’ils distribuent.

Impossible à faire en l’état actuel, car nous n’avons pas de propriété $produit dans l’entité Distributeur. Si on ajoute cette propriété et qu’on lui associe une jointure ManyToMany, il y a peu de chance pour que la table de liaison intermédiaire soit la même (on aurait une deuxième table de liaison : distributeur_produit, ce qui n’est pas très pratique à gérer).

Nous allons donc mettre en place une relation bidirectionnelle.

La première étape est d’ajouter la propriété $produit de jointure dans la table inverse, c’est-à-dire la table distributeur.

On lui associe une jointure ManyToMany, mais en prenant le soin de préciser qu’il s’agit d’une relation inverse avec l’option mappedBy.

Attention, cette option prend ...