Doctrine: Many-to-One Beziehungen definieren

Während meines Notizblock-Lern-Projektes kam mir eine wichtige Eigenschaft von Doctrine in die Quere: Das Definieren von Many-to-One bzw. Many-to-Many Beziehungen.

Um meine Notizen besser sortieren zu können mussten Kategorien her. Da sich die Anzahl der Kategorien aber auch mal ändern könnte, mussten diese dynamisch zugeordnet werden. So eine Kategorie brauchte nicht viel: Eine ID und einen Namen. Die ID erledigt Doctrine automatisch, also brauchte ich nur noch die Entity mit dem Namen zu erstellen und die DB zu aktualisieren:

Soweit so gut, trotdem schon eine ganze Menge Text für das bisschen Funktionalität.
Mit der entsprechenden Annotation erkennt Symfony die neue Entity auch sofort als eigenes Objekt, welches wiederum ein Parameter einer Notiz ist.

Ein separates Formular zum Erstellen und Bearbeiten von Kategorien zu schreiben war auch einfach. Der Clou war dann eher die Auswahl einer der erstellten Kategorien in dem Notiz-Formular…

Für das Formular-Element in der Notiz verwendet man den EntityType, der zu einer Select-Box, mehreren Checkboxen oder einer Mehrfachauswahl mutieren kann.

Um eine Select-Box zur Auswahl einer einzelnen Kategorie in das Formular zu bringen, muss die Kategorie-Entity angepasst werden oder das Feld choice_label gesetzt werden. Standardmäßig bestimmt die Funktion __toString() mit welcher Ausgabe der EntityType benannt wird.

Fertig. Die ID der Kategorie wird beim Submit des Formulares übergeben und von Doctrine automatisch verwaltet.
Man, was ist Doctrine doch nur für eine Erleichterung! 🙂

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.