运行php Artisan db:seed时未找到Laravel 5类DatabaseSeeder


Laravel 5 class DatabaseSeeder not found when running php Artisan db:seed

我是Laravel的新手,当我运行php artisan db:seed时,我收到以下消息:

[ReflectionException]类DatabaseSeeder执行不存在

遗憾的是,我已经运行了composer dump自动加载,但没有任何结果。我的类位于默认文件夹/种子中

类中的代码:

<?php namespace database'seeds;
use Illuminate'Database'Seeder;
use Illuminate'Database'Eloquent'Model;
use App'User;
use App'Country; 
class DatabaseSeeder extends Seeder {
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();
        $this->call('CountryTableSeeder');
        $this->call('UserTableSeeder');
    }

}
class UserTableSeeder extends Seeder {
    public function run() {
        DB::table('users');
        User::Create(['username' => 'Bart', 'email'=>'bart@example.com', 'password' => Hash::make('password')]); 
    }
}
class CountryTableSeeder extends Seeder { 
    public function run() {
        DB::table('country');
        Country::Create(['country_name' => 'Nederlander']);
    }
}

我做错了什么?

首先,您应该按照@JoeCode在注释中的建议删除namespace database'seeds;

第二件事是,你不应该把很多类放在一个文件里(就像你在看问题时可能做的那样)。每个类都应该放在单独的文件中。

如果您尝试了所有其他操作,但仍然得到Class DatabaseSeeder does not exist,请查看您的composer.json

应该有一个部分看起来像:

    "autoload": {
        "classmap": [
            "app/Library",
            "app/Models"
        ],
...

您应该在这里再添加两行,告诉autoloader它应该在其他地方查找您的类。

所以最终结果将是:

    "autoload": {
        "classmap": [
            "app/Library",
            "app/Models",
            "database/seeds",
            "database/migrations"
        ],
...

这将把seedsmigrations目录都添加到自动加载器类路径中。