ラムネグから一言:寝る前に読むとくだらなすぎて逆に寝れると好評なすごい適当なブログをこっちではじめてます.
laravelで検索結果のページネーションを実装するときのやり方です。
フレームワークを学ぼうとlaravelを遊びで触ってたんですがふと検索してみると2ページ目以降に検索条件が引き継がれていない…。一行パパっと変えるだけでOKなんで参考にしてみてください。
laravelで検索ページネーションを有効に
いきなり解決方法を。
以下の一行をbradeファイル内でページネーションを呼び出している箇所(linksのトコロ)と置き換えてください。
この一行をコピペ
{{ $object_name->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で検索結果のページネーションを有効にする方法を紹介しました。
一行追加するだけで超カンタンに検索結果もページネーションできるのでやってみてくださいね。
【おしらせ、というか完全なる宣伝】
文体がもうぜんぜん適当すぎてあれだけどものすごい自由に書いてるブログ「檸檬だくだく」もよろしく.寝る前に読める恐ろしくくだらないやつです.
こんなにも一ミリも目を引かれないタイトルを取り扱ってます: ココア20g / ハイチュウとかってさ / なぜ米と小麦を食べようと思ったのかの謎 /