Block-4-Zusammenfassung: Filtering, Pagination & Sorting
Block-4-Zusammenfassung: Filtering, Pagination & Sorting
~15 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026
Block 4 ist ABGESCHLOSSEN. Aus einer API, die IMMER alle Daten unsortiert zurückgab, ist eine API geworden, die Clients FEINGRANULAR steuern lässt, WAS sie in WELCHER Reihenfolge und WIE VIEL AUF EINMAL bekommen.
Was Block 4 behandelt hat
- Kapitel 29: automatische Pagination,
hydra:totalItems/hydra:view. - Kapitel 30:
itemsPerPageanpassen, Ober- und Untergrenzen, Pagination abschalten. - Kapitel 31:
SearchFiltermitpartial/exact/start/end. - Kapitel 32:
OrderFilter, mehrfeldige Sortierung. - Kapitel 33:
RangeFilterfür numerische Bereiche. - Kapitel 34:
DateFilterfür Datumsbereiche. - Kapitel 35: ein eigener
AbstractFilterfür Volltextsuche über mehrere Felder.
Projektstand am Ende von Block 4
api/src/ – Stand nach Kapitel 35
api/
└── src/
├── Entity/
│ ├── Project.php ← Search-/Order-/Range-/DateFilter, 45 Testdaten
│ └── Tag.php
├── Filter/
│ └── MultiFieldSearchFilter.php
├── Dto/
│ └── ProjectSummary.php
├── Validator/
│ ├── UniqueProjectName.php
│ └── UniqueProjectNameValidator.php
└── DataFixtures/
└── AppFixtures.php ← 45 Projekte + 2 TagsSelbst anwenden: Tags filterbar machen
Als ÜBUNG: ergänzen Sie #[ApiFilter(SearchFilter::class, properties: ['name' => 'partial'])] auf der Tag-Entity aus Kapitel 12 – OBWOHL Tag schreibgeschützt ist, funktioniert Filterung PROBLEMLOS auf GetCollection, da Filter NUR das LESEN betreffen.
Was in Block 5 kommt
Bisher existieren Project und Tag KOMPLETT ISOLIERT voneinander – Block 5 (Kapitel 37-46) führt ECHTE Beziehungen ein: eine neue Task-Entity, verknüpft mit Project (ManyToOne/OneToMany), sowie eine ManyToMany-Beziehung zwischen Task und Tag – GENAU das Domänenmodell aus der Symfony-Schulung, jetzt als AUTOMATISCH generierte, verschachtelte API-Ressourcen.
Tipp: Filter und Pagination aus Block 4 funktionieren SPÄTER auch auf verschachtelten Collections wie /api/projects/{id}/tasks – das in diesem Block gelernte Wissen bleibt vollständig GÜLTIG, auch nachdem Beziehungen hinzukommen.