Persistenz · Frage 6 von 12
Welchen Typ verwendet man in einem Extbase-Model für eine Property, die mehrere verknüpfte Objekte enthält, z. B. alle Speaker einer Konferenz?
1 Antwort ist richtig. Einfach
Lösung anzeigen
Lösung
- A \
TYPO3\ CMS\ Extbase\ Persistence\ ObjectStorage
Erklärung
Für 1:n- und m:n-Relationen nutzt Extbase die Klasse ObjectStorage, z. B. protected ObjectStorage $speakers; mit der Annotation @var ObjectStorage<Speaker> für IDE und statische Analyse. Einträge fügt man über Methoden wie addSpeaker() hinzu, die intern attach() aufrufen, und entfernt sie mit detach(). Im Template durchläuft man die Relation mit <f:for each="{conference.speakers}" as="speaker">. Die ObjectStorage muss initialisiert werden, bevor man darauf zugreift, sonst gibt es einen Fehler. PHPs SplObjectStorage sieht ähnlich aus, Extbase kann damit aber keine Relationen laden oder Änderungen daran speichern.