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

製作 プログラム

最終更新日:2021/03/25

ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.

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で検索結果のページネーションを有効にする方法を紹介しました。

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

【おしらせ、というか完全なる宣伝】

文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.

こんなにも一ミリも目を引かれないタイトルを取り扱ってます: 続・マーガリン問題 / 爆弾岩についての考察 / 毎月5のつく日は /