Was ist Pagination
Die Pagination von Laravel ist in den Query Builder und das Eloquent ORM integriert und ohne Konfiguration einsatzbereit. Die aktuelle Seite wird automatisch aus dem Query-Parameterpage des HTTP-Requests gelesen und den generierten Links auch automatisch hinzugefügt.
Das Standard-HTML unterstützt Tailwind CSS; alternativ ist Bootstrap CSS verfügbar.
Drei Arten der Pagination
| Methode | Rückgabewert | Merkmale |
|---|---|---|
paginate() | LengthAwarePaginator | Ermittelt die Gesamtzahl. Erzeugt Seitenlinks mit Nummern |
simplePaginate() | Paginator | Ermittelt keine Gesamtzahl. Nur „Zurück“ und „Weiter“ |
cursorPaginate() | CursorPaginator | Cursor-basiert. Ideal für große Datenmengen |
Grundlagen
Pagination mit dem Query Builder
Pagination mit Eloquent
simplePaginate
Wenn Sie die Gesamtzahl nicht benötigen (und nur „Zurück“- und „Weiter“-Links anzeigen), istsimplePaginate() effizienter.
cursorPaginate (Cursor-Pagination)
Cursor-Pagination verwendet statt eines OFFSET eine WHERE-Klausel und ist bei großen Datenmengen entsprechend performant. Für Infinite-Scroll-UIs besonders geeignet.OFFSET vs. Cursor
Umsetzung im Controller
Pagination-Links in Blade anzeigen
links() erzeugt automatisch das HTML für die Seitenlinks. Standardmäßig werden drei Seiten vor und nach der aktuellen Seite angezeigt.
Anzahl der angezeigten Links anpassen
MitonEachSide() legen Sie fest, wie viele Links um die aktuelle Seite herum erscheinen.
Anzahl pro Seite aus dem Request übernehmen
Mehrere Paginatoren auf einer Seite
Zeigen Sie zwei Paginatoren auf derselben Seite an, kollidiert die gemeinsame Nutzung des Parameterspage. Über das dritte Argument können Sie den Parameternamen ändern.
URL anpassen
Basis-URL ändern
Query-Parameter anhängen
Hash-Fragment anhängen
API-Antworten (JSON)
Geben Sie einen Paginator direkt aus einer Route oder einem Controller zurück, wird er automatisch in JSON umgewandelt.Kombination mit API-Ressourcen
Um das Ergebnis vonpaginate() in eine API-Ressourcen-Collection zu verpacken, übergeben Sie es an UserResource::collection().
UserResource::collection() einen Paginator übergeben, werden die Pagination-Informationen automatisch als Metadaten ergänzt.
Im JSON von
cursorPaginate() stehen statt Seitennummern die Felder next_cursor und prev_cursor. API-Clients übergeben deren Werte als cursor-Parameter im nächsten Request.Eigene Pagination-Views
In der View direkt angeben
Standard-View durch eigene Datei ersetzen
Veröffentlichen Sie zunächst die offiziellen Views und passen Sie sie an.resources/views/vendor/pagination/ u. a. folgende Dateien:
tailwind.blade.php— Standard (für Tailwind CSS)bootstrap-5.blade.php— für Bootstrap 5simple-tailwind.blade.php— für simplePaginate- …
tailwind.blade.php direkt oder erstellen Sie eine neue View und geben Sie sie im AppServiceProvider an.
Bootstrap CSS verwenden
Wenn Sie statt Tailwind Bootstrap nutzen möchten, konfigurieren Sie das in der Methodeboot() des AppServiceProvider.
Paginator manuell erstellen
Um Pagination auf bereits vorhandene Daten (z. B. Arrays) anzuwenden, instanziieren Sie eine Paginator-Klasse direkt.Häufig verwendete Instanzmethoden
Zusammenfassung
Welche Pagination wählen?
Welche Pagination wählen?
paginate()— wenn Gesamtzahl und nummerierte Seitenlinks nötig sind (typische Listenansichten)simplePaginate()— wenn „Zurück“/„Weiter“-Links genügen (schneller)cursorPaginate()— bei großen Datenmengen, Infinite Scroll oder häufigen Schreibvorgängen (beste Performance)
Blade-Ausgabe – Grundmuster
Blade-Ausgabe – Grundmuster
paginate() an die View und geben Sie mit links() die Seitenlinks aus.
Die aktuelle Seite wird automatisch aus dem Query-Parameter page gelesen.Pagination in APIs
Pagination in APIs
Ein direkt aus einer Route zurückgegebener Paginator wird automatisch in JSON umgewandelt.
In Kombination mit API-Ressourcen geben Sie
UserResource::collection($paginator) zurück.
Die Antwort enthält data (das Datensatz-Array) und diverse Meta-Informationen.