ハジメトーク最新記事

ハジメクリエイト社員による、日々の業務やトレンド、日常のアレコレについてお届けします。

もっと見る

【Laravel】ページネーションでGETパラメータを維持するappends()が便利すぎた話

2025.08.01

どうもこんにちは塚本です。

Laravelのページネーション機能、本当に便利ですよね。
コントローラ側でデータを取得する際に ->paginate() を呼び出し、Viewで {{ $items->links() }} を記述するだけで、あっという間にページネーションが実装できてしまいます。

ただ、検索結果一覧など、GETパラメータが付与されたURLでこのページネーションを使うと、2ページ目に移動した際にパラメータが消えてしまう問題に遭遇したことはありませんか?

今回は、この問題を驚くほど簡単に解決する方法についてご紹介します。知った瞬間に脳汁が出るほど感動すること間違いなしです。

GETパラメータが消えてしまう問題

まずは課題の確認です。
Laravelのページネーションは、デフォルトでは ?page=2, ?page=3 のように、ページ番号の情報だけをURLに付与します。

そのため、例えば /items?keyword=apple のように、GETパラメータで検索キーワードを受け取って結果を表示するページで2ページ目に移動しようとすると、リンク先のURLが /items?page=2 となってしまい、せっかく指定した keyword=apple の情報が消えてしまいます。

これでは2ページ目以降は検索条件が外れた状態になってしまい、ユーザーを混乱させてしまいますよね。

appends() を使えば一発解決!

これを解決するのが、appends() メソッドです。

使い方は驚くほど簡単。Viewファイルの links() メソッドの前に appends() を呼び出し、引数に request()->query() を渡すだけ。

// Controller
// (例)キーワードで絞り込んでページネーション
$keyword = request('keyword');
$items = Item::where('name', 'like', '%' . $keyword . '%')->paginate(15);

// View
// GETパラメータを引き継いでページネーションリンクを生成
{{ $items->appends(request()->query())->links() }}

たったこれだけで、links() が生成する全てのページネーションリンクに、現在のURLに付与されているGETパラメータを自動でマージしてくれるのです。

つまり、/items?keyword=apple というURLでこのページを表示した場合、2ページ目へのリンクは自動的に /items?keyword=apple&page=2 となります。完璧ですね。

感動、そして脳汁

この appends(request()->query()) の存在を知った瞬間、文字通り脳汁が出ました。これまで「ちょっと面倒だな」と思って自前でパラメータを組み立てていた処理が、こんなにもエレガントに解決できるとは。Laravelの細やかな配慮と開発者体験へのこだわりに、改めて感動させられました。

知っているか知らないかで、開発効率が大きく変わる好例だと思います。もし同じようなことで悩んでいた方がいれば、ぜひこの appends() メソッドを活用してみてください。


🏢 株式会社ハジメクリエイトについて

この記事は、 株式会社ハジメクリエイト のエンジニアが執筆しました。


💻 Webシステム開発のプロフェッショナル

私たちは、ビジネスの成長をサポートするため、 PHPを用いたオーダーメイドのシステム開発 を提供しています。
お客様一人ひとりのニーズに応じたカスタムシステムを、 企画から開発・運用まで一貫してサポート
さらに、 React Nativeを活用したiOS/Android対応のアプリ開発 も得意としています。

単に「作る」だけでなく、
課題の本質に向き合い、最適な解決策を提案する のがハジメクリエイトのスタイルです。


🧑‍💻 一緒に働く仲間を探しています!

株式会社ハジメクリエイトでは、 自ら考え行動できるエンジニア を募集しています。
「私はこれがしたい!」という想いを持つあなた、一緒にモノづくりを楽しみませんか?

  • 技術で人の役に立ちたい
  • 意見が通る小さなチームで働きたい
  • フロントエンドもバックエンドも、いろいろ挑戦してみたい
  • お客さんと一緒にプロジェクトを育てたい

そんな気持ちがある方なら、きっと居心地のいい環境だと思います。
正社員はもちろん、パートタイムでの参加も歓迎中! 柔軟な関わり方で、あなたらしく働いてください。

👉 採用情報を見る
👉 お問い合わせはこちら


ちょっとでも「この会社、気になるな」と思ったら、ぜひお気軽にご連絡ください📩
最後まで読んでいただきありがとうございました!

  • Laravel

この記事を書いた人

Sho Tsukamoto

Chief Engineer Sho Tsukamoto

2023年4月入社。Web職人のたまごです。 最近はもっぱらコーディングすることは少なく、LaravelやReact Nativeを用いたシステム開発をメインとしています。

Sho Tsukamotoの書いた記事一覧へ

ハジメクリエイトでは一緒に働く仲間を募集しています!

関連記事