Magento 2 Experten — Hyvä Theme, Tailwind CSS & SEO aus einer Hand ›

Block-5-Zusammenfassung: Beziehungen & komplexe Resources

Block-5-Zusammenfassung: Beziehungen & komplexe Resources

~16 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026

Block 5 ist ABGESCHLOSSEN. Aus zwei ISOLIERTEN Entities ist ein VOLLSTÄNDIGES, verknüpftes Domänenmodell geworden – GENAU der Kern-Datenbestand des Aufgaben-Managers.

Was Block 5 behandelt hat

  • Kapitel 37: die Task-Entity mit ManyToOne zu Project.
  • Kapitel 38: die inverse OneToMany-Seite auf Project.
  • Kapitel 39: verschachtelte Collections über uriVariables/Link.
  • Kapitel 40: IRI vs. eingebettete Objekte, gezielt gesteuert über Gruppen.
  • Kapitel 41: Fehlerfälle beim Verknüpfen, Erstellen über den verschachtelten Endpunkt.
  • Kapitel 42: ManyToMany zwischen Task und Tag.
  • Kapitel 43: Filtern nach Beziehungen, inklusive tags[] für mehrere Werte.
  • Kapitel 44: cascade/orphanRemoval für sauberes Löschen.
  • Kapitel 45: zirkuläre Referenzen bewusst vermeiden.

Projektstand am Ende von Block 5

api/src/ – Stand nach Kapitel 45

api/
└── src/
    ├── Entity/
    │   ├── Project.php   ← OneToMany tasks (cascade, orphanRemoval)
    │   ├── Task.php      ← ManyToOne project, ManyToMany tags
    │   └── Tag.php       ← ManyToMany tasks (inverse, schreibgeschützt)
    ├── Filter/
    │   └── MultiFieldSearchFilter.php
    ├── Dto/
    │   └── ProjectSummary.php
    ├── Validator/
    │   ├── UniqueProjectName.php
    │   └── UniqueProjectNameValidator.php
    └── DataFixtures/
        └── AppFixtures.php  ← Projekte, Tags, Tasks mit Beziehungen

Selbst anwenden: Status mit Task verknüpfen

Falls die Status-Übung aus Kapitel 18/28 umgesetzt wurde: ergänzen Sie eine ManyToOne-Beziehung von Task zu Status (analog zu project aus Kapitel 37), GENAU nach demselben Muster.

Achtung: GENAU wie bei den vorherigen Übungen: NICHT vorausgesetzt für spätere Kapitel – Block 6 baut UNABHÄNGIG davon auf dem bisherigen Stand von Project/Task/Tag auf.

Was in Block 6 kommt

Bisher ist die GESAMTE API ÖFFENTLICH – JEDER kann JEDES Projekt lesen, bearbeiten und löschen. Block 6 (Kapitel 47-56) führt eine User-Entity, JWT-Authentifizierung und Voter-basierte Zugriffskontrolle ein – GENAU das Security-Kapitel der Symfony-Schulung (Kapitel 34-43), jetzt angewendet auf API Platform.

Tipp: Ein guter Zeitpunkt, die BISHERIGEN 46 Kapitel EINMAL komplett durchzugehen: doctrine:database:drop --force && doctrine:database:create && doctrine:migrations:migrate --no-interaction && doctrine:fixtures:load --no-interaction baut die Datenbank KOMPLETT NEU auf, ein guter Test, ob ALLE Migrationen in der RICHTIGEN Reihenfolge funktionieren.