DTOs statt der Entity direkt
DTOs statt der Entity direkt
~15 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026
Serialisierungsgruppen reichen für die MEISTEN Fälle – manchmal soll das API-Antwortformat aber STRUKTURELL vom Entity-Aufbau ABWEICHEN. Dafür gibt es DTOs (Data Transfer Objects).
Wann Gruppen nicht mehr ausreichen
- Die API-Antwort soll Felder aus MEHREREN Entities KOMBINIEREN (z. B. Projekt + Anzahl Tasks in EINEM flachen Objekt).
- Das externe API-Format soll UNABHÄNGIG von internen Refactorings der Entity bleiben (Versionierung/Stabilität).
- Berechnungslogik ist zu KOMPLEX für eine einzelne Getter-Methode (Kapitel 25) und verdient eine EIGENE Klasse.
Ein Output-DTO definieren
<?php
declare(strict_types=1);
namespace App\Dto;
final class ProjectSummary
{
public int $id;
public string $name;
public bool $isRecent;
}EINE einfache, reine Datenklasse OHNE Doctrine-Attribute, OHNE Validierung – ein DTO beschreibt NUR die FORM der API-Antwort, nicht die Speicherung.
Das DTO an eine Operation binden
use App\Dto\ProjectSummary;
new Get(
uriTemplate: '/projects/{id}/summary',
output: ProjectSummary::class,
provider: ProjectSummaryProvider::class,
),output legt fest, WELCHE Klasse API Platform statt der Entity serialisiert – ein provider (ein STATE PROVIDER, GENAU das Prinzip aus Kapitel 5) übernimmt die eigentliche BEFÜLLUNG des DTOs aus der echten Project-Entity.
Achtung: Ein VOLLSTÄNDIGES Provider-Beispiel folgt ERST in Block 7 (Kapitel 57-66), sobald State Provider im DETAIL behandelt werden – dieses Kapitel vermittelt NUR das KONZEPT, damit spätere Kapitel darauf aufbauen können, OHNE das Prinzip neu erklären zu müssen.
DTOs vs. Gruppen: eine Entscheidungshilfe
| Ansatz | Wann sinnvoll |
|---|---|
| Serialisierungsgruppen (Kapitel 23-24) | EINFACHER, direkt an der Entity, für die MEISTEN CRUD-Fälle ausreichend |
| DTOs (dieses Kapitel) | MEHR Aufwand, aber notwendig für kombinierte/stark abweichende Antwortformate |
Tipp: Für UNSER Projekt bleiben Project und Tag bei Serialisierungsgruppen – DTOs kommen ERST in Block 7 zum Einsatz, wenn eine Projekt-Statistik-Resource ECHTEN Mehrwert gegenüber einer einfachen Entity-Antwort bietet.