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
En zo kan je nog wel even doorgaan.

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