Laravelでページネーション

データの一覧ページを作成すると必ず必要になってくるのがページネーションでしょう。データ件数の少ないときはいいのですが、データ件数が多くなってきたときに1ページに表示する件数があまりにも多いとユーザービリティ的によろしくありません。そこで、今日はLaravelでページネーションをする方法を調べてみたいと思います。

Fluentクエリービルダーでページネーション

1. Fluentクエリービルダーでページネーションするには、paginateメソッドを使います。第1引数に、1ページに表示する件数、第2引数に、取得するフィールド名を配列で、指定します。尚、第2引数を省略すると、全てのフィールドを取得します。

DB::table(‘テーブル名’)->paginate(‘表示件数’,’表示フィールドの配列’);

2. それでは、下記にコントローラの記述例を表記しておきます。

//クエリーの結果を10件ずつにページングする
 $data['orders']=DB::table('orders')->paginate(10)
 //orderビューへデータを渡す
 View::make('order',$data);

3. ビューでデータを取得するにはresultsプロパティを使用します。

//ページネーションされたデータを表示する
 <?php foreach($orders->results as $order): ?>
 <tr>
 <td><?php echo $order->id;?></td>
 <td><?php echo $order->name;?></td>
 <td><?php echo $order->created_at';?> </td>
 </tr>

4. ページネーションの全てのリンクを生成するには、linksメソッドを使用します。

//全てのページへのリンクを生成
 <?php echo $order->links();?>

5. 『<<前』のリンクを生成するには、previousメソッド、『次>>』のリンクを生成するにはnextメソッドを使用します。

//『前』と『次』のリンクだけを生成する
 <?php echo $orders->previos(). ' ' .$orders->next();?>

6. だいたい下記のような感じになります。

手動でページネーションを生成する

7. Fluentクエリービルダーを使わずに、手動でページネーションするには、Paginatorクラスのmakeメソッドを使用します。

Paginator::make($results,$total,$per_page);

メソッド一覧

  • make(結果の配列,総件数,表示件数)
    新しいページネーションインスタンスを生成します。
  • page(総データ件数,表示件数)
    リクエストのクエリー文字列から現在のページを取得
  • valid(ページ数)
    指定したページが有効なページかどうかを判断します。
  • links(リンク数)
    HTMLページネーションリンクを生成します。引数の初期値は3です。
  • slider(リンク数)
    HTML数字ページリンクのスライディングリストを生成します。引数の初期値は3です。
  • previous(表示文字列)
    『前』HTMLリンクを生成します。引数の初期値はnull値です。
  • next(表示文字列)
    『次』HTMLリンクを生成します。
  • appends(追加アイテムの配列)
    クエリー文字列リンクに追加するアイテムを設定します。

プロパティ一覧

  • $results
    現在のページの結果
  • $page
    現在のページ
  • $last
    結果の最終ページ
  • $total
    結果の合計数
  • $per_page
    ページごとのアイテム数(1ページの表示データ数)

EloquentORMでページネーション

8. 前回も述べましたが、公式ドキュメントには、『EloquentORMはFluentクエリービルダーの全てのメソッドが使えます。』と書いてありました。つまり、EloquentORMでページネーションするには、Fluentクエリービルダー同様、paginateメソッドを使用すればいいはずです。

モデル名::paginate(表示件数)

次回の実践編『Laravelで一覧ページをページング』でcollectionsテーブルの一覧ページをページネーションしてみたいと思います。

本日は以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ