Laravel 的分頁
在其他框架中,分頁是令人頭痛的。Laravel 使它變得輕而易舉,它可以通過在 Controller 和 View 中新增幾行程式碼來生成分頁。
基本用法
分頁項有很多種方法,但最簡單的方法是在查詢構建器或 Eloquent 查詢中使用 paginate 方法。開箱即用的 Laravel 負責根據使用者檢視的當前頁面設定限制和偏移。預設情況下,當前頁面由 HTTP 請求的?page query string 引數值檢測。當然,Laravel 會自動檢測此值並插入由 paginator 生成的連結中。
現在讓我們說我們想在查詢時呼叫 paginate
方法。在我們的示例中,paginate 的傳遞引數是你希望每頁顯示的專案數。在我們的例子中,假設我們想要每頁顯示 10 個專案。
<?php
namespace App\Http\Controllers;
use DB;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* Show all of the users for the application.
*
* @return Response
*/
public function index()
{
$users = DB::table('users')->paginate(10);
return view('user.index', ['users' => $users]);
}
}
注意: 目前,使用
groupBy
語句的分頁操作無法由 Laravel 有效執行。如果你需要將groupBy
與分頁結果集一起使用,建議你查詢資料庫並手動建立分頁器。
簡單的分頁
假設你只想在分頁檢視中顯示下一個和上一個連結。Laravel 使用 simplePaginate
方法為你提供此選項。
$users = DB::table('users')->simplePaginate(10);
在檢視中顯示結果
現在讓我們在檢視中顯示分頁。實際上,當你在 Eloquent 查詢中呼叫 paginate
或 simplePaginate
方法時,你會收到一個 paginator 例項。當呼叫 paginate 方法時,你會收到 Illuminate\Pagination\LengthAwarePaginator
的例項,而當你呼叫 simplePaginate
方法時,你會收到 Illuminate\Pagination\Paginator
的例項。這些例項/物件附帶了幾種解釋結果集的方法。此外,除了這些輔助方法之外,paginator 例項還是迭代器,可以作為陣列迴圈。
收到結果後,你可以使用刀片輕鬆呈現頁面連結
<div class="container">
@foreach ($users as $user)
{{ $user->name }}
@endforeach
</div>
{{ $users->links() }}
links
方法將自動呈現指向結果集中其他頁面的連結。這些連結中的每一個都將包含特定的頁碼,即 ?page
查詢字串變數。links 方法生成的 HTML 與 Bootstrap CSS 框架完全相容。