戻る

404 | NOT FOUND

Route::get()が間違い、Controller がない、Controllerメソッドが未実装のとき

・routes\web.php のRoute::getが正しいかどうか確認する。第1引数がURLパス、第2引数がコントローラーファイルパス@メソッド名である。
・app\Http\Controllers ディレクトリに HelloController.php などのコントローラーファイルがあるか確認する。

500 | SERVER ERROR

Viewsにエラーがある、Modelsがないとき

・resources\views ディレクトリ内のビューファイルを確認する。@foreach構文、変数名など
・app\Models ディレクトリにBook.phpなどのモデルファイルがあるか確認する。
 例:Route::get('hello/list', 'App\Http\Controllers\HelloController@list');

InvalidArgumentException | View [パス] not found.

Viewsがないとき

・app\Http\Controllers ディレクトリ内ファイルの return view()が正しいかどうか確認する。第1引数がresources\views\以下の「.」区切りのパスである。
 例:return view('hello.list', $data);

ArgumentCountError

Controllerメソッドが不一致(Too few arguments to function ~)

・app\Http\Controllers ディレクトリ内ファイルの Controllerメソッドの引数と、routes\web.php のRoute::get()引数が整合するか確認する。
 Route::getメソッドが任意パラメーターの場合、対応するControllerメソッド引数には既定値を明示する。
 例:public function param(int $id = 1) { }

TypeError

Controllerメソッドの型が不一致

・app\Http\Controllers ディレクトリ内ファイルの Controllerメソッドの引数と、routes\web.php のRoute::get()引数が整合するか確認する。
 Controllerメソッド引数がint型である場合は、大きすぎる値またはアルファベットが含まれる場合はエラーになる。

Error(Class "モデル" not found)

名前空間を含めたモデルの指定ミス

・app\Models\ ディレクトリ内ファイルのモデルが名前空間を含めて正しいか確認する。
 名前空間の指定が「namespace App\Models;」であった場合、「return $this->hasMany('App\Models\Review');」のように「Models」を含める必要がある。

マイグレーションのエラー

Illuminate\Database\QueryException

・マイグレーションテーブル(migrations)がdatabase\migrations\ディレクトリにあるか確認する。
 原因はMySQL上にmigrationsテーブルがあり、その項目があるにも関わらずLaravelにファイルがないのが問題である。
 「php artisan migrate:fresh」コマンドを実行して、migrationsテーブルを初期化する。
・↑で無理なら、データベースに該当のテーブルを空でもよいので追加する。
 booksの場合は、MySQLコマンドで「create table books(id int(11) auto_increment not null, primary key (id));」と実行する。
  MariaDB [quick_laravel]> create table books(id int(11) auto_increment not null, primary key (id));

migrationコマンドについては Laravel 6.x データベース:マイグレーション を参考。

バリデーションが出てくる


・formタグのアクションの値が間違っている。

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'updated_at' in 'field list'


原因はデーベースの項目にupdated_atとcreated_atが自動的に追加されるため。
以下の対処方法がある。
・モデルに以下のコードを追加する。
  protected $hidden = [
    'created_at',
    'updated_at',
    'deleted_at'
  ];
・データベースにupdated_atとcreated_atをtimestamp型で追加する。

戻る