Um eine Beziehung zwischen 2 Entities herzustellen verwenden wir OneToMany, ManyToOne, ManyToMany, OneToOne
Beispielsweise wir haben eine App über die wir Bestellungen für ein Restaurant abwickeln. Kunde können aus mehrere Kategorien wählen. Die Beziehung wäre, einer Kategorie sind viele Gerichte zugordnet und
| Getränke | Vorspeise | Hauptgericht | Nachspeise |
| Wasser | Spargelsuppe | Schnitzel mit Pommes | Vanille Pudding |
| Cola | Shrimpssuppe | Kartoffel mit Quark | Schoko Pudding |
| Bier | Frühlingsrollen | Gemüseauflauf | Himbeereis |
| Eistee |
targetEntity und mappedBy oder inversedBy
targetEntity beschreibt die Zielentitätät mit der eine Beziehung hergestellt werden soll
inversedBy wird bei der Entity verwendet, die den Fremdschlüssel in der Tabelle enthält. Die Tabelle Gericht enthält somit einen Fremdschlüssel, der unse alle Kategorie IDs anzeigt, dazu wir verbinden uns mit der Eigenschaft/property „gericht“ in der Tabelle Kategorie (inversedBy=“gericht“). Die Entity Kategorie verwendet mappedBy, denn der Fremdschlüssel befindet sich in der Tabelle Gericht.
// ManyToOne, viele Gerichte sind einer Kategorie zugeordnet
class Gericht
{
...
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Kategorie", inversedBy="gericht")
* @Groups({"read", "write"})
*/
private $kategorie;
// OneToMany, eine Kategorie kann viele Gerichte enthalten
class Kategorie
{
...
/**
* @ORM\OneToMany(targetEntity="App\Entity\Gericht", mappedBy="kategorie")
*/
private $gericht;
# um alle getter und setter Klassen zu erstellen können wir folgenden Befehl aufrufen, es wird nach der Entity gefragt
php bin/console make:entity --regenerate