Laravel 播种机 class 当我通过 DatabaseSeeder 调用它时未找到

Laravel Seeder class not found when I call it via DatabaseSeeder

我基于 documentation./database/seeds/GridWithRoverSeeder.php 中名为 class GridWithRoverSeeder 的数据库迁移:

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class GridWithRoverSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        DB::table('grid')->insert([
            'id' => 1,
            'width' => 10,
            'height' => 10,
        ]);

        DB::table('rover')->insert([
            'id' => 1,
            'rover_id' => 1,
            'command' => "RRMRMMRM",
            'last_command'=>""
        ]);
    }
}

我从 DatabaseSeeder 调用它:

use Illuminate\Database\Seeder;

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

但是当我 运行 php artisan db:seed 我得到以下错误:

   ReflectionException  : Class GridWithRoverSeeder does not exist

你知道为什么吗?

确保在创建播种器或 laravel 中的任何新 class 之后有 运行 composer dump-autoload

我能够重现您的问题,这有助于解决问题。

删除您的种子文件并重新生成它。

php artisan make:seed GridWithRoverSeeder

运行

composer dump-autoload

在 DatabaseSeeder 中调用播种器

$this->call([
        GridWithRoverSeeder::class
    ]);

注: 避免手动重命名文件。