独自ペジネータ作成)ペジネーション結果の表示(結果のJSON変換)ペジネーションビューのカスタマイズペジネータインスタンスメソッドイントロダクション他のフレームワークのペジネーションは苦痛に満ちています。ORMに統合されており、データベースの結果を簡単、お手軽にペジネーションできます。基本的な使用法クエリビルダの結果アイテムをペジネーションするには多くの方法があります。queryへpaginateメソッドを使う方法です。paginateメソッドは、ユーザが表示している現在のページに基づき、正しいアイテム数とオフセットを指定する面倒を見ます。デフォルトではHTTPリクエストのpageクエリ文字列引数の値により現在ページが決められます。この値はLaravelが自動的に探し、さらにペジネーターが挿入するリンクを自動的に生成します。以下の例では、paginateに一つだけ引数を渡しており、「ページごと」に表示したいアイテム数です。この例ではページごとに15アイテムを表示するように指定しています。現在groupBy文を使用したペジネーション操作は、Laravelで正しく実行できません。groupByを使用したペジネーションを使用する必要がある場合はデータベースクエリを実行し、その結果を元にペジネーターを自前で作成してください。シンプル・ペジネーション「次」と「前」のリンクだけのシンプルなペジネーションビューを表示したい場合はsimplePaginateメソッドを使用し、より効率的にクエリすべきでしょう。これはビューに正確なページ番号を表示する必要がない、巨大なデータセットを扱う場合に便利です。DB::table(&#39;users&#39;)-&gt;simplePaginate(15);Eloquentの結果さらにEloquentモデルもペジネーションできます。例としてUserモデルの15アイテムをページ付け表示してみましょう。ご覧の通り、クエリビルダ結果のペジネーションを行う記法はきれいでわかりやすいものです。App\User::paginate(15);もちろんwhere節のような制約をクエリに指定した後にpaginateを呼び出すこともできます。100)-&gt;paginate(15);Elqouentモデルをページづけするときにも、simplePaginateメソッドを使用できます。渡された配列を元にして、ペジネーションインスンタンスを作成したいこともあります。必要に応じてIlluminate\Pagination\Paginatorか、Illuminate\Pagination\LengthAwarePaginatorインスタンスを生成することで実現できます。Paginatorクラスは結果にセットされているアイテムの総数を知る必要はありません。そのためクラスは最終ページのインデックスを取得するメソッドを持っていません。LengthAwarePaginatorはPaginatorとほとんど同じ引数を取りますが、結果にセットされているアイテム総数も指定する必要がある点が異なっています。言い換えれば、PaginatorはクエリビルダとEloquentに対するsimplePaginateメソッドに対応し、一方のLengthAwarePaginatorはpaginateに対応しています。自前でペジネーターインスタンスを生成する場合、ペジネーターに渡す結果の配列を自分で"slice"する必要があります。PHP関数を調べてください。ペジネーション結果の表示paginateメソッドを呼び出す場合、Illuminate\Pagination\LengthAwarePaginatorインスタンスを受け取ります。simplePaginateメソッドを呼び出すときは、Illuminate\Pagination\Paginatorインスタンスを受け取ります。これらのオブジェクトは結果を表すたくさんのメソッドを提供しています。したヘルパーメソッドに加え、ペジネーターインスタンスはイテレータでもあり、配列としてループ処理できます。結果を取得したら、その結果とページリンクをBladeを使い表示できます。}}linksメソッドは結果の残りのページヘのリンクをレンダーします。それらの各リンクにはpageクエリー文字列変数が含まれています。CSSフレームワークと互換性があることを覚えておいてください。ペジネーターURIのカスタマイズsetPathメソッドにより、ペジネーターがリンクを生成するときに使用するURIをカスタマイズできます。ペジネーターでhttp://example.com/custom/url?page=Nのようなリンクを生成したい場合、setPathメソッドにcustom/urlを渡してください。//});ペジネーションリンクの追加ペジネーションリンクにクエリ文字列を付け加えたいときは、appendsメソッドを使います。sort=votesを各ペジネーションリンクに追加する場合には、以下のようにappendsを呼び出します。}}ペジネーションのURLに「ハッシュフラグメント」を追加したい場合は、fragmentメソッドが使用できます。各ペジネーションリンクの最後に#fooを追加したい場合は、以下のようにfragmentメソッドを呼び出します。}}結果のJSON変換Laravelのペジネーター結果クラスはIlluminate\Contracts\Support\Jsonableインターフェイス契約を実装しており、toJsonメソッドを提示しています。ペジネーション結果をJSONにとても簡単に変換できます。ルートやコントローラーアクションからシンプルにペジネーターインスタンスを返せば、JSONへ変換されます。App\User::paginate();});ペジネーターのJSON形式はtotal、current_page、last_pageなどのメタ情報を含んでいます。実際の結果オブジェクトはJSON配列のdataキーにより利用できます。ルートから返されたペジネーターインスタンスにより生成されるJSONの一例を見てください。CSSフレームワークを用いてレンダーされます。Bootstrapを使っていない場合でも、そうしたリンクをレンダーする独自のビューを自由に定義できます。ペジネータインスタンスのlinksメソッドを呼び出す際に、ビュー名をメソッドの最初の引数として渡してください。}}しかし、vendor:publishコマンドを使用し、resources/views/vendorディレクトリへペジネーションビューを作成し、カスタマイズする方法が一番簡単でしょう。--tag=laravel-paginationこのコマンドは、resources/views/vendor/paginationディレクトリへビューを設置します。このディレクトリのdefault.blade.phpファイルが、デフォルトペジネーションビューに対応します。ペジネーションのHTMLを変更するには、ただこのファイルを編集するだけです。ペジネータインスタンスメソッドペジネータインスタンスは以下の追加ペジネーション情報を提供しています。readme.md).これは次期リリース版の翻訳で、コミュニティにより翻訳されています。