Pagination-Grundlagen
Pagination-Grundlagen
~14 Min. Lesezeit Zuletzt aktualisiert am 8. August 2026
Kapitel 28 kündigte es an: GET /api/projects liefert AKTUELL ALLE Projekte in EINER Antwort – API Platform PAGINIERT AUTOMATISCH, das war bisher NUR wegen der WENIGEN Testdaten nicht sichtbar.
Mehr Testdaten erzeugen
public function load(ObjectManager $manager): void
{
for ($i = 1; $i <= 45; $i++) {
$projekt = new Project();
$projekt->setName(sprintf('Projekt %02d', $i));
$projekt->setDescription(sprintf('Automatisch erzeugtes Testprojekt Nummer %d.', $i));
$projekt->setPriority(random_int(1, 5));
$manager->persist($projekt);
}
// ... Tags unverändert
$manager->flush();
}docker compose exec php bin/console doctrine:fixtures:load --no-interactionDie Standard-Pagination testen
curl -k https://localhost/api/projects{
"@context": "/api/contexts/Project",
"@id": "/api/projects",
"@type": "hydra:Collection",
"hydra:member": [ /* 30 Einträge */ ],
"hydra:totalItems": 45,
"hydra:view": {
"@id": "/api/projects?page=1",
"@type": "hydra:PartialCollectionView",
"hydra:first": "/api/projects?page=1",
"hydra:last": "/api/projects?page=2",
"hydra:next": "/api/projects?page=2"
}
}NUR 30 von 45 Projekten in hydra:member – der STANDARD-Wert für itemsPerPage ist 30. hydra:totalItems zeigt die GESAMTZAHL, hydra:view liefert FERTIGE Links zur nächsten/ersten/letzten Seite.
Die nächste Seite abrufen
curl -k 'https://localhost/api/projects?page=2'Der Query-Parameter page steuert die Seite – KEIN eigener Code nötig, API Platform übernimmt das LIMIT/OFFSET in der generierten Datenbankabfrage VOLLSTÄNDIG selbst.
Achtung: hydra:last FEHLT in der Antwort, wenn paginationPartial aktiviert ist (relevant bei SEHR großen Tabellen, bei denen COUNT(*) selbst zu teuer wird) – für UNSER Projekt bleibt die STANDARD-Vollzählung aktiv.
Tipp: hydra:view ist GENAU das Feld, das eine React-Pagination-Komponente (Block 10) auswerten sollte, statt hydra:totalItems und itemsPerPage SELBST zu verrechnen – die fertigen Links vermeiden Off-by-one-Fehler.