3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Laravel】`$request->input()` / `query()` / `get()` の違いと使い分け完全ガイド

3
Last updated at Posted at 2025-07-28

Laravel でリクエストの値を取得するときに使う $request オブジェクト。
特に初心者が混乱しやすいのが:

  • $request->input()
  • $request->query()
  • $request->get()

この記事では、それぞれの違いと正しい使い分けを 初心者にもわかりやすく 解説します 💡


🧩 結論(先にまとめ)

メソッド 対象データ 用途 推奨度
$request->query() クエリパラメータ(GET) URLの?param=valueを取りたいとき ✅ よく使う
$request->input() GET / POST / route 両方から柔軟に取得したいとき ✅ 一番推奨
$request->post() POSTデータのみ フォーム送信など、POSTだけを明確に取りたいとき ✅ 明示的にPOSTだけ欲しい時に便利
$request->get() GET / POST / route input()と同じ(Symfony由来) ❌ Laravelでは非推奨

🔍 それぞれの解説

1. $request->query()

$keyword = $request->query('keyword');
  • 対象:GETパラメータのみ(URLのクエリ文字列)
  • 使用例:https://example.com/search?keyword=laravel
  • 取得される値:laravel

✅ 使うべきシチュエーション

  • 検索やフィルタリングなどで GET パラメータのみを扱いたいとき
  • APIのクエリチェックなどで明示的に GET を扱いたいとき

2. $request->input()

$email = $request->input('email');
  • 対象:POSTデータ、GETデータ、ルートパラメータ
  • 取得順序:POST → GET → Route
  • 使いやすさ:どんな HTTP メソッドでも柔軟に取得

✅ 使うべきシチュエーション

  • フォーム送信やAPIリクエストを問わず入力値を拾いたいとき
  • GET と POST の両方に対応したエンドポイント設計をするとき

3. $request->get()

$name = $request->get('name');
  • 対象:input() と同様(POST → GET → Route)
  • 由来:Symfony(Laravelの内部で使われている基盤)
  • Laravel的には非推奨

⚠️ 注意点

  • Laravel公式ドキュメントでは基本的に登場しない
  • チーム開発では「なぜ get() 使ってるの?」とツッコまれる可能性あり

🎯 使い分けチャート

[クエリ文字列だけ欲しい] → query()
[入力値を全部統一的に取得したい] → input()
[昔からの癖で get() を使ってる] → input() に置き換えよう!

👀 実践例

🔎 検索フォームの処理(GET)

public function search(Request $request)
{
    $keyword = $request->query('keyword'); // 明示的に GET
}

📝 問い合わせフォーム送信(POST)

public function contact(Request $request)
{
    $email = $request->input('email'); // POST/GETどちらでも拾える
}

❌ これはやめよう

$name = $request->get('name'); // Symfony風。Laravelでは使わない

✍️ おまけ:複数パラメータの取得

$data = $request->only(['name', 'email']);
  • 複数のキーを一括で取りたいときは only() が便利

✅ まとめ

Laravel では、取得するリクエストパラメータによって適切なメソッドを使い分けることが重要です。

  • GETだけ扱う → query()
  • POST/GET混在対応 → input()
  • 古い書き方の get() → なるべく使わない

正しく使い分けることで、バグのない、読みやすいコードを書けるようになります!


🙋‍♂️ あなたはどれ使ってますか?

もし $request->get() を使っている人がいたら、ぜひこの記事を参考に input() か query() にリファクタリングしてみてください!


🔗 関連リンク


3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?