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 查詢中呼叫 paginatesimplePaginate 方法時,你會收到一個 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 框架完全相容