サーチ…


Laravelのページネーション

他のフレームワークではページネーションは頭痛です。 Laravelはそれを簡単にします。ControllerとViewにコードを少し追加するだけでページネーションを生成できます。

基本的な使用法

項目のページを設定するには多くの方法がありますが、最も簡単な方法は、クエリビルダまたはEloquentクエリでページネートメソッドを使用することです。 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メソッドを呼び出すと、 paginate処理のインスタンスが返されます。 paginateメソッドが呼び出されると、 Illuminate\Pagination\LengthAwarePaginatorインスタンスが表示され、 simplePaginateメソッドを呼び出すと、 Illuminate\Pagination\PaginatorインスタンスがIlluminate\Pagination\Paginatorます。これらのインスタンス/オブジェクトには、結果セットを説明するいくつかのメソッドが付属しています。さらに、これらのヘルパーメソッドに加えて、ページネーターインスタンスはイテレーターであり、配列としてループすることができます。

結果を受け取ったら、ブレードを使用してページリンクを簡単にレンダリングできます

<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>

{{ $users->links() }}

linksメソッドは、結果セット内の他のページへのリンクを自動的にレンダリングします。これらのリンクのそれぞれには、特定のページ番号、つまり?pageクエリ文字列変数が含まれます。 linksメソッドによって生成されたHTMLは、 Bootstrap CSSフレームワークと完全に互換性があります。

ページ区切りビューの変更

laravelページネーションを使用している間は、独自のカスタムビューを自由に使用することができます。したがって、paginatorインスタンスのリンクメソッドを呼び出すときは、ビュー名をメソッドの最初の引数として渡します。

{{ $paginator->links('view.name') }}

または

ページビューをカスタマイズするには、vendor:publishコマンドを使用してresources/views/vendorディレクトリにエクスポートします。

php artisan vendor:publish --tag=laravel-pagination

このコマンドは、ビューをresources/views/vendor/paginationディレクトリに配置します。このディレクトリ内のdefault.blade.phpファイルは、デフォルトのページ区切りビューに対応しています。このファイルを編集して、ページネーションのHTMLを変更します。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow