当我运行php artisan db:seed时,我得到以下错误:

[ReflectionException] Class SongsTableSeeder does not exist

这是怎么回事?

我的DatabaseSeeder类:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();

        $this->call('SongsTableSeeder');
    }

}

我的SongsTableSeeder类:

<?php

// Composer: "fzaninotto/faker": "v1.4.0"
use Faker\Factory as Faker;
use Illuminate\Database\Seeder;
use DB;

class SongsTableSeeder extends Seeder {

    public function run()
    {
        $faker = Faker::create();
        $songs = [];
        foreach(range(1, 10) as $index)
        {
            $songs[] = ['title' => $faker->words(rand(1,4))];
        }

        DB::table('songs')->insert($songs);

    }

}

当前回答

我正在运行最新的Laravel 5开发版本,如果你改变了命名空间,你需要像这样调用你的种子类:

$this->call('\todoparrot\TodolistTableSeeder');

显然,您需要用指定的名称空间替换todoparrot。否则,我将收到原始问题中指出的相同错误。

其他回答

如果你已经从任何其他项目复制了种子文件,那么你需要运行artisan命令php artisan db:seed,否则就没问题。

我正在运行最新的Laravel 5开发版本,如果你改变了命名空间,你需要像这样调用你的种子类:

$this->call('\todoparrot\TodolistTableSeeder');

显然,您需要用指定的名称空间替换todoparrot。否则,我将收到原始问题中指出的相同错误。

php应该在database/seeds目录下

控制台命令步骤:

composer dump-autoload

然后:

php artisan cache:clear

然后:

php artisan optimize

然后:

php artisan db:seed

or:

php artisan db:seed --class=SongsTableSeeder

我有同样的“反射异常”错误。解决方案是将类文件从dev复制到服务器。愚蠢的错误,但是考虑到我们处理了多少文件,每次都很容易忘记将它们复制到服务器上。

您需要将SongsTableSeeder放入与DatabaseSeeder.php文件相同的目录中的SongsTableSeeder.php文件中。

你需要在你的控制台运行:

composer dump-autoload

生成新的类映射,然后运行:

php artisan db:seed

我刚刚测试过。它在Laravel 5中没有任何问题