てくてくテック

【Laravel】簡単なマイグレーションしようとしたらClassNotFoundになったお話

どーも!

たかぽんです!

先日マイグレーションをしていたんですが、そこで結構詰まってしまったことがあったので書いておきます...

マイグレーションをしようとしたら...

さて、実は先日、Laravelで新しいDBをマイグレーションで追加しようとしたんです。

最初は普通に追加できて、後からテーブル名にsをつけ忘れていたのに気づきファイルをちゃんと修正しました。

そしてmigrationをしようとすると...

Error

  Class 'HogeTable' not found

  at vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:453
    449|     public function resolve($file)
    450|     {
    451|         $class = Str::studly(implode('_', array_slice(explode('_', $file), 4)));
    452|
  > 453|         return new $class;
    454|     }
    455|
    456|     /**
    457|      * Get all of the migration files in a given path.
{"time":"2020-07-16T11:12:25+09:00","host":"127.0.0.1","level":"DEBUG","message":"SQL","context":{"duration":"1.22 ms","sql":"SELECT 1"}}

  1   vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:189
      Illuminate\Database\Migrations\Migrator::resolve("2020_07_16_103557_create_hoge_table")

  2   vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php:165
      Illuminate\Database\Migrations\Migrator::runUp("./database/migrations/2020_07_16_103557_create_hoge_table.php")
SENPC-0363:

上記のようなエラーになってしまったんですね...

*テーブル名は"Hoge"置き換えてます。

で、そんなクラスは使うはずがない!

ので、どこで使おうとしているんだ...?

となったわけです...w

解決策

さて、では解決策を...

すごい簡単な見落としでした...

僕の場合ですが、"ファイル名の修正忘れ" が原因でした。

先ほどのログの...

以下の箇所

Migrator::resolve("2020_07_16_103557_create_hoge_table")

をみてみるとわかりますが、ファイルの中身はちゃんとhogesになるように全て修正していますが、ファイル名がhogeのままなのがわかります。

これを直すと無事migrationを回すことができました。

ちゃんちゃん!

まとめ

まさかでしたね...w

30分くらい悩んでました...w

いつものマイグレーションのはずなのにっ!っと...w

いっそのこと、マイグレーションの名前を間違えたりしたらファイルを直接編集して修正ではなく、改めてマイグレーションファイルを新規で作り直して、内容だけコピーした方がいいのかなぁ...とか...

でも次は絶対引っかからないですからね!

皆さんもマイグレーションをやっていてクラスが見つからない...?となった時は是非気にしてみてください!

それでわ!

モバイルバージョンを終了