2017-01-24 1 views
0

Nehmen wir an, ich habe eine Paginierung wie dieseWie werden neue eingehende Einträge beim Paging von Posts behandelt?

return App\Post::paginate(1); 

Nach diesen jemand Laden für Beiträge in der Datenbank einen neuen Eintrag erstellt. Wie kann ich sicherstellen, dass die "zweite Seite" meiner Seitennummerierung nicht die erste Seite zurückgibt?

Muss ich immer einen Zeitstempel mit jeder Anfrage senden, um eine zusätzliche Abfrage durchzuführen, bevor die Paginierung verwendet wird? wie

App\Post::where('created_at', '<', $request->input('max_created_at'))->paginate(1); 
+1

Nun, das ist ziemlich normales Verhalten, ich habe nie irgendwelche großen Websites gesehen, die es verändert haben. –

Antwort

0

können Sie orderBy verwenden. Man könnte so etwas tun:

// Get the last post (most recent) 
return App\Post::orderBy('created_at', 'DESC')->paginate(1); 

Oder:

// Same as above 
return App\Post::orderBy('created_at', 'DESC')->first(); 

orderBy bedeutet alles, was Sie in Ihrer Abfrage sortiert werden zur Folge haben. Hoffe es wird helfen.

+0

Das wird genau das Problem verursachen, das ich beschrieben habe: Benutzer lädt den ersten Beitrag - Benutzer b fügt einen anderen hinzu - Benutzer drücke "Weiter" für den nächsten Beitrag, bekommt aber denselben Beitrag wieder –

+0

Ah OK. Ich habe nicht richtig gelesen, was du geschrieben hast, mein Schlechter. Also, äh, nein, ich weiß nicht .. –

0

Sie müssen keinen Zeitstempelwert übergeben, um die Paginierung zu überprüfen. In der Steuerung müssen Sie in der Ansichtsdatei das Ergebnis dieser Abfrage übergeben.

In der Ansichtsdatei benötigen Sie die untere Zeile für die Seitennummerierung automatisch nach Laravel-Syntax.

{{ $result->links() }} 

Besuchen https://laravel.com/docs/5.2/pagination/ wie Laravel Paginierung Arbeit.

+0

Ich glaube nicht, dass du mein Problem hast. Ich benutze nicht einmal Blade-Views - das ist natürlich nicht das, was ich gemeint habe –

+0

Kannst du bitte mehr über dein Problem berichten? –

Verwandte Themen