2017-02-15 4 views
2

Ich habe ein Laravel-Projekt, das eine API hat. Einige Endpunkt-Controller verwenden die Paginierung für den Index.Laravel Eloquent paginate wie Paginationsparameter abgefragt werden?

Ich möchte die Paginierungsparameter dem Kunden zur Verfügung stellen. Der Grund ist, dass sie nicht immer nach dem ersten Artikel fragen müssen, nur um herauszufinden, wie viele Artikel pro Seite es gibt (zum Beispiel wenn der Kunde die ersten X Artikel aus irgendeinem Grund überspringen möchte).

Ich habe versucht, paginate(0), aber das gibt den Standardwert von 16 Elemente.

Gibt es eine einfache integrierte Möglichkeit, dies zu tun?

Antwort

2

Sie könnten die Paginator results to JSON konvertieren. Dadurch werden Sie einige Meta-Daten erhalten, einschließlich der Gesamtzahl der Elemente, Anzahl der Seiten, aktuelle Seite usw.

Nach der gelinkten Seite, wenn wir einen Weg wie diese:

Route::get('users', function() { 
    return App\User::paginate(); 
}); 

Es wäre so etwas wie dies zurück:

{ 
    "total": 50, 
    "per_page": 15, 
    "current_page": 1, 
    "last_page": 4, 
    "next_page_url": "http://laravel.app?page=2", 
    "prev_page_url": null, 
    "from": 1, 
    "to": 15, 
    "data":[ 
     { 
      // Result Object 
     }, 
     { 
      // Result Object 
     } 
    ] 
} 

ich glaube, das wäre, was Sie suchen.

Ich hoffe, es hilft Ihnen.

+0

Hallo Erick, danke für die Antwort. Ich habe das versucht, aber 'paginate()' gibt die Standardanzahl von Elementen zurück (15). Ich habe versucht, die Daten aus der Datenbank zu vermeiden, wenn sie nicht benötigt wurden. –

+0

Hmmm, ich habe das genaue Beispiel ausprobiert, das du gezeigt hast, und es hat funktioniert. Ich muss etwas in meiner tatsächlichen Abfrage vor der Zeit tun, die die Ergebnisse verursacht, die abgerufen werden. –

+0

Ich sehe. Also, wenn etwas auftaucht, frage einfach nochmal :) –