MBO-SD : De site voor software developer in het MBO
Relaties in Symfony
Wat zijn relaties?
Als je een goede Entity Relation Diagram
(ERD in het kort) hebt van jouw applicatie zie je vaak
dat er lijntjes lopen tussen entiteiten
(of Models). Deze lijntjes geeft aan dat de entiteiten
een relatie hebben met elkaar. Een aantal voorbeelden van relaties:
- Een auteur met boeken
- Een student met een klas
- Een dokter met patienten
- Een film met een categorie
Soorten relaties
Afhankelijk van hoe de pijl in jouw ERD
loopt heb je verschillende soorten relaties. (Let op dat
we relaties altijd in het Engels aanduiden.
One to Many
Vertaald een op veel. Een Auteur heeft/ kan meerdere boeken hebben geschreven. Ook al heeft een Auteur maar
een (of geen) boeken geschreven, de relatie tussen de Auteur en Boek blijft One To Many
Many to One
Als je de One To Many
omdraait dan krijg je een Many to One
. Uit bovenstaand voorbeeld
kan je ook zeggen dat alle boeken een auteur hebben (en dit moet altijd). Je spreekt dan over een One to Many
One to One
In sommige gevallen wil je een een op een koppeling maken, dit doe je alleen als er een goede reden voor is, anders kan je
beter alle data in 1 tabel stoppen. Een voorbeeld van One to One
is bij een bestelling waarbij er meerdere
adressen zijn, bijvoorbeeld een leveringsadres en een factuuradres. Beide zijn van het type adres en horen in een tabel
met adresgegevens. De bestel tabel (of Order entity) heeft dan wel 2 properties (velden) nodig, een voor leveringsadres en
een voor factuuradres.
Many to Many
De meest lastige vorm is een Many to Many
, dit omdat een standaard database dit technisch niet kan en
Symfony op de achterkant een koppeltabel maakt tussen de twee Entiteiten. Een voorbeeld hiervan is met boeken en
schrijvers (auteurs). Er zijn boeken die door meerdere auteurs geschreven kunnen worden en auteurs kunnen meerdere
boeken schrijven. Dit is een voorbeeld van een Many to Many
waarbij er een koppeltabel gemaakt wordt
tussen beide Entities