laravelで検索結果ページネーションを有効にするカンタンな方法

製作 プログラム

最終更新日:2019/10/13

ラムネグから一言:無料アプリを3つ作りました。記事下部にリンクがあるので見てみてくださいね。さっそくみてみる

laravelでは検索結果のページネーションを実装するときのやり方です。

フレームワークを学ぼうとlaravelを遊びで触ってたんですがふと検索してみると2ページ目以降に検索条件が引き継がれていない…。一行パパっと変えるだけでOKなんで参考にしてみてください。

  1. laravelで検索ページネーションを有効に
  2. コードの説明
    1. appends
    2. request
    3. query
  3. コラム:クエリストリングとリクエストボディ
  4. まとめ

laravelで検索ページネーションを有効に

いきなり解決方法を。

以下の一行をbradeファイル内でページネーションを呼び出している箇所(linksのトコロ)と置き換えてください。

この一行をコピペ

{{ $diviners->appends(request()->query())->links() }}

はい完了!これだけでlaravelの検索結果のページネーションが完了です。

コードの説明

ここからは興味のある人だけ読んでみてください。

まずさっき置き換えた一行ですが「appends」っていうのと「request」、それから「query」っていう3つの新しいヨコモジが出てきています。

こいつらなんやねん、っていうのを。

最初にまとめておくとappendsで「?」以下のURLの追加指示、その追加パラメータにrequest->queryを設定しています。

appends

appendsはURLにクエリストリング(URLパラメータとも。「?」の後ろに続く部分のコト)を追加するときの関数みたいなもの。

appendsに追加した文字列がページネーションの各リンクに追加されます。

request

requestはコントローラーファイルで使うことが多いやつですね。それをbladeで使っています。

POSTで送られてきたフォームの値やそれこそクエリストリング(「?」の後ろのパラメータ)を取得するときにかなりの頻度で使っているはず。

query

queryはrequestの1機能で、クエリストリングだけをちょうだい!っていう意味になります。

よく使うのはrequest->input()だと思いますがコレだとPOSTされた値なんかもぜんぶ拾っちゃいます。今回は検索に使うクエリストリングだけほしいのでqueryを使ってるんです。

inputとquery以外だと、

  • only
  • except

みたいのがあります。only(‘param’)とするとparamだけ取得できます。input(‘param’)とするのとおんなじ結果になるのでいつ使うのかは不明。

except(‘param’)とするとparamを除いたほかのパラメータをぜんぶ手に入れられます。こっちは使えそうです。

コラム:クエリストリングとリクエストボディ

GETで送るやつ、つまり「?」の後につくやつを食えりストリングとよびます。

反対にPOSTで送るやつをリクエストボディとよびます。

まとめ

ここではlaravelで検索結果のページネーションを有効にする方法を紹介しました。

一行追加するだけで超カンタンに検索結果もページネーションできるのでやってみてくださいね。

【どどん!】ラムネグではただいまアプリを絶賛提供中!さあ、選べる3つの無料アプリ!あなたはどれにする?

【わたガチャ】

あなただけのガチャを作ろう♪

すたーと!

【みんガチャ】

みんなで一つのガチャを作りあげよう♪

すたーと!

【litty-リティ】

秘密のメッセージをフォロワーさんに送っちゃおう!

すたーと!