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

时间:2015-03-17 15:42:08

标签: php laravel-5

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

  

[ReflectionException]类DatabaseSeeder   不存在

我已经遗憾地运行了composer dump-autoload而没有任何结果。 我的班级位于默认文件夹/ seeds

班级代码:

<?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']);
    }
}

我做错了什么?

2 个答案:

答案 0 :(得分:2)

首先,您应该删除{JARCoder在评论中建议的namespace database\seeds;

第二件事是你不应该把很多类放在一个文件中(因为你可能看过你的问题)。每个类应放在单独的文件中。

答案 1 :(得分:0)

如果您已经尝试了所有其他内容并仍然获得Class DatabaseSeeder does not exist,请查看您的composer.json

应该有一个类似于:

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

你应该在这里添加两行来告诉自动加载器它应该在哪里查找你的类。

所以最终结果将是:

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

这会将seedsmigrations目录添加到您的自动加载器类路径中。