当我运行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);

    }

}

当前回答

我是这样解决的:

复制文件内容。 删除文件。 运行命令:php artisan make:seeder。 将文件内容复制回此文件中。

发生这种情况是因为我更改了文件名。我不知道为什么改动之后就不管用了。

其他回答

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

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

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

composer dump-autoload

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

php artisan db:seed

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

我只使用了一个文件和两个类在它下面:

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

use Faker\Factory as Faker;

class DatabaseSeeder extends Seeder {

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

    Model::unguard();

    $this->call("LessonsTableSeeder");


}

}

class LessonsTableSeeder extends Seeder {

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

    $faker = Faker::create();

    foreach(range(1,30) as $index) {

        Lesson::create(['title' => $faker->sentence(5), 'body' => $faker->paragraph(4)]);

    }

}

}

我是这样解决的:

复制文件内容。 删除文件。 运行命令:php artisan make:seeder。 将文件内容复制回此文件中。

发生这种情况是因为我更改了文件名。我不知道为什么改动之后就不管用了。

如果我们的CustomTableSeeder与DatabaseSeeder在同一个目录中,我们应该像下面这样使用:

$this->call('database\seeds\CustomTableSeeder');

在我们的DatabaseSeeder文件; 那么将抛出另一个错误,说:'DB类未找到' 然后我们应该添加我们的DB facade到我们的CustomTableSeeder文件,如下所示:

use Illuminate\Support\Facades\DB;

这对我很管用!