在 Laravel 中要實作分頁只要兩行!!
在迷你部落格範例中,HomeController@index 裡會取得全部文章:
$posts = Post::all();
假如我們想要一頁只顯示 3 筆,可以改成:
$posts = Post::paginate(3);
完成。如果有使用 where 條件的話,paginate() 方法就加在最後面,例如:
$posts = Post::where('words', '>', 100)->paginate(3);
如果只想顯示上下頁而不要顯示頁數:
$posts = Post::simplePaginate(3);
在做了以上的指定後,前端的頁面會自動以 3 筆為一頁的方式顯示,但這時我們並看不到頁數,或上下頁的連結。現在我們讓頁數顯示在文章清單下方,到 View 中加入:
<ol>
@foreach ($posts as $post)
//略...
@endforeach
</ol>
{{ $posts->links() }}
$posts->links() 這行會顯示分頁連結,而且都自動幫你計算好頁數了,只是樣式可能有點簡陋。
如果你要讓整個網站使用預設的分頁顯示方式(頁數、上下頁),可以在 app/config/view.php 裡面修改 pagination 的型式,使用頁數:
pagination::slider
使用上、下頁:
pagination::simple
你可以設計一個 View 來顯示分頁,假設是 app/views/site/pagination.blade.php,然後就能使用它:
{{ $posts->links("site.pagination") }}
有些額外的分頁資料可以使用: