Laravel Seeder 报错:Target class [BarTableSeeder does not exist]

在使用 Laravel Artisan 生成 Seeder 的过程中,不小心输错了 Seeder 名

1
php artisan make:seeder FooTableSeeder

以至于填充数据时发生报错:

1
php artisan db:seed --class=BarTableSeeder

Illuminat\Contracts\Container\BindingResolutionException : Target class [BarTableSeeder] does not exist.

此时,如果单单修改生成的 Seeder 文件名 FooTableSeeder.phpBarTableSeeder,依然报错。

这是因为 Composer 的 autoloader 中仍存有错误的 classmap 记录,例如在 vendor/compser/autoload_classmap.php 中,我们可以看到原先错误的 classmap 记录:

1
'FooTableSeeder' => $baseDir . '/database/seeds/FooTableSeeder.php',

使用 dump-autoload 重新生成 Composer 的 autoloader:

1
composer dump-autoload

之后就可以顺利地进行数据填充了。