前提
・Windows 10
・Laravel 8.0
背景
Laravel入門書進めていく中で参考書通り進めたが進まず、模索した結果解決したのでメモ
事象
任意のSeederファイル"PeopleTableSeeder.php"を作成後、DBにテストカラムを作成するにあたり
php artisan serve:db seed
を実行した。
結果、以下エラー発生。
Class PeopleTableSeeder does not exist.
試したこと
try1
Qiitaを参考に
composer dump-autoload
実行後、再度
php artisan serve:db seed // ① or php artisan serve:db seed --class=PeopleTableSeeder // ②
を実行
結果
①、②で同じエラー発生
try2
次に
php artisan migration:fresh
を実行後
composer dump-autoload php artisan serve:db seed // ①
を実行(先述の②をやり忘れる)
結果
①で同じエラー発生…
try3
php artisan cache:clear
実行後
composer dump-autoload php artisan serve:db seed // ① or php artisan serve:db seed --class=PeopleTableSeeder // ②
結果
①:エラー発生 ②:シーディング完了!
結論
エラーの要因は
・migrationのfreshが必要だった=悪さをするカラムがあったため(try2より) ・キャッシュが残っていたこと(try3より) ・php artisan serve:db seed --class=PeopleTableSeederのようにクラスを指定する必要がある(try2,3より)
のどれか。
所見
composer dump-autoload
だけで治る、とあるが、恐らくこれは6.x系までの話。
8.xでは先述の3つの要因が影響していると思われる。
参考記事
一般的な解決方法。 恐らくLaravel6.x系まではこれだけで解決したが8.x系ではダメっぽい
- stackoverflow この人は色々やってもダメだったみたい… 僕の解決策以外にも
php artisan optimize
とかやってみたらしい