Laravel5.7でClass ${class_name} does not exist

コマンドラインでシーダーを実行しようとすると、Class ${class_name} does not existのエラーが出た時の対処法。

[vagrant@localhost zeus]$ php artisan db:seed
Seeding: AccountTableSeeder

   ReflectionException  : Class AccountTableSeeder does not exist

  at /home/vagrant/local/zeus/vendor/laravel/framework/src/Illuminate/Container/Container.php:779
    775|         if ($concrete instanceof Closure) {
    776|             return $concrete($this, $this->getLastParameterOverride());
    777|         }
    778|
  > 779|         $reflector = new ReflectionClass($concrete);
    780|
    781|         // If the type is not instantiable, the developer is attempting to resolve
    782|         // an abstract type such as an Interface of Abstract Class and there is
    783|         // no binding registered for the abstractions so we need to bail out.

  Exception trace:

  1   ReflectionClass::__construct("AccountTableSeeder")
      /home/vagrant/local/zeus/vendor/laravel/framework/src/Illuminate/Container/Container.php:779

  2   Illuminate\Container\Container::build("AccountTableSeeder")
      /home/vagrant/local/zeus/vendor/laravel/framework/src/Illuminate/Container/Container.php:658

  Please use the argument -v to see more details.

1.DatabaseSeeder.phpと読み込むclassが存在するか確認する

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        $this->call([
		AccountTableSeeder::class,
	 ]);
    }
}
use Illuminate\Database\Seeder;

class AccountTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
        DB::table('account')->insert([
            'login_id' => str_random(10),
            'company_id' => '001',
        ]);
        //
    }
}

問題ない。何故だ?

composer dump-autoload で直る
コマンドラインでたたきます。

[vagrant@localhost zeus]$ php composer.phar dump-autoload
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.

改めてphp artisan db:seedとすると、今度は上手くいくのがわかります。

[vagrant@localhost zeus]$ php artisan db:seed
Seeding: AccountTableSeeder
Database seeding completed successfully.

Good Job!