当我通过DatabaseSeeder调用Laravel Seeder类时找不到

时间:2019-06-20 12:04:59

标签: php database laravel laravel-migrations

我基于documentationclass GridWithRoverSeeder中进行了名为./database/seeds/GridWithRoverSeeder.php的数据库迁移:

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

你知道为什么吗?

2 个答案:

答案 0 :(得分:3)

确保在laravel中创建种子器或任何新类之后,您已经运行composer dump-autoload

答案 1 :(得分:2)

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

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

php artisan make:seed GridWithRoverSeeder

运行

composer dump-autoload

在DatabaseSeeder中调用播种器

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

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