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() にリファクタリングしてみてください!