Laravel - Database - Pagination

前言

學習一個框架, Ray 的想法是, 在深入理解底層實作的原理之前, 應該先知道這個框架的 使用方法; 先學習怎麼使用這個前人造的輪子, 再學習怎麼樣一個輪子。
所以本篇文章重點在於細讀官方文件, 並將內容理解後以 Q&A 的方式記錄下來, 加速學習以及查詢。

Introduction




Basic Usage

Paginating Query Builder Results

以下的 Laravel example code 的意思是?
  • Example:

    <?php

    namespace App\Http\Controllers;

    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\DB;

    class UserController extends Controller
    {
    /**
    * Show all of the users for the application.
    *
    * @return Response
    */
    public function index()
    {
    $users = DB::table('users')->paginate(15);

    return view('user.index', ['users' => $users]);
    }
    }
  • Answer:
    分頁處理 users table query builder 的結果

以下的 Laravel example code 的意思是?
  • Example:

    <?php
    $users = DB::table('users')->simplePaginate(15);
  • Answer:
    paginate users table 的 query 結果, 不顯示分頁頁數, 只提供上一頁跟下一頁的 link, 效能較佳


Paginating Eloquent Results

以下的 Laravel example code 的意思是?
  • Example:

    <?php
    $users = User::where('votes', '>', 100)->paginate(15);
  • Answer:
    paginate User model Eloquent queries 結果, 每頁 15 筆資料

以下的 Laravel example code 的意思是?
  • Example:

    <?php
    $users = User::where('votes', '>', 100)->simplePaginate(15);
  • Answer:
    simple paginate User model Eloquent queries 結果, 每頁 15 筆資料, 差別在於不提供頁數號碼, 只提供上一頁跟下一頁的 link


Manually Creating A Paginator

Laravel 中, Paginator 與 LengthAwarePaginator 的差異是?

Paginator 不需要知道共有幾筆資料, 所以也無法直接取得最後一筆資料
LengthAwarePaginator 需要知道共有幾筆資料




Displaying Pagination Results

Customizing The Paginator URI

Laravel 中, 以下的 example 的意思是?
  • Example:

    <?php
    Route::get('users', function () {
    $users = App\Models\User::paginate(15);

    $users->withPath('custom/url');

    //
    });
  • Answer:
    客製化 paginator 的 links, 像是 http://example.com/custom/url?page=N


Laravel 中, 以下的 example 的意思是?
  • Example:

    <?php
    {{ $users->appends(['sort' => 'votes'])->links() }}
  • Answer:
    ['sort' => 'votes'] 附加到 pagination link 的 query

Laravel 中, 以下的 example 的意思是?
  • Example:

    <?php
    {{ $users->withQueryString()->links() }}
  • Answer:
    將所有的 querystring 都附加到 pagination link

Laravel 中, 以下的 example 的意思是?
  • Example:

    <?php
    {{ $users->fragment('foo')->links() }}
  • Answer:
    附加 fragment 到 pagination links, 像是 http://www.example.org/foo.html#foo


Converting Results To JSON

Laravel 中, 以下的 example 的意思是?
  • Example:

    <?php
    Route::get('users', function () {
    return App\Models\User::paginate();
    });
  • Answer:
    return JSON 格式的 pagination object




Customizing The Pagination View

Using Bootstrap




Paginator Instance Methods

Laravel - Database - Migrations Laravel - Database - Query Builder

留言

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×