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 ...