🚨

🚨Laravel【初心者向け】エラーの解決法①Missing argument

に公開

前提

PHP 8.4.5
Laravel 11.44.2


はじめに エラー解決のための一般的なヒント

  • エラーメッセージをよく読む: どのファイルのどの行でエラーが発生しているか記載されています
  • Laravelのログを確認: storage/logs/laravel.log にエラー詳細が記録されます
  • デバッグ出力: dd($変数) を使って変数の中身を確認する習慣をつける
    エラーは開発の一部です。落ち着いてエラーメッセージを読み、検索エンジンやLaravelの公式ドキュメントを活用しましょう!

1. Missing argument エラー

エラーメッセージ例:

Missing required parameter $id

原因: これは「必要な情報が足りないよ!」というエラーです。
簡単に言うと、Laravelがあなたに「IDをください」と言っているのに、あなたがIDを渡し忘れている状態です。

具体例:
例えば、ユーザーの詳細ページを表示するプログラムを考えてみましょう。

ルート設定(routes/web.php):

Route::get('/user/{id}', 'UserController@show');

これは「/user/1」や「/user/2」といったURLにアクセスしたとき、UserControllerのshowメソッドを呼び出す設定です。{id}の部分には、実際のユーザーIDが入ります。

コントローラー(正しい例):

public function show($id) {
    // $idを使ってユーザー情報を取得
    $user = User::find($id);
    return view('user.show', ['user' => $user]);
}

コントローラー(間違った例):

public function show() {  // ←$idがない!
    // ここで$idを使おうとしても存在しないのでエラーになる
}

解決法:
コントローラーの関数に引数を追加する

public function show($id) {  // ← $idを追加
    // これで$idが使えるようになる
}

引数の名前がルートの{}内の名前と一致していることを確認

// routes/web.php
Route::get('/user/{user_id}', 'UserController@show');

// UserController.php
public function show($user_id) {  // ← {user_id}に合わせる
    // これで正しく動く
}

Discussion