【问题标题】:Laravel 5 class DatabaseSeeder not found when running php Artisan db:seed运行 php Artisan db:seed 时找不到 Laravel 5 类 DatabaseSeeder
【发布时间】:2015-05-20 03:23:06
【问题描述】:

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

我做错了什么?

【问题讨论】:

  • 取出顶部的namespace database\seeds;

标签: php laravel-5


【解决方案1】:

首先你应该删除namespace database\seeds;as @JoeCoder 在评论中建议。

第二件事是您不应该将许多类放在一个文件中(就像您在查看您的问题时所做的那样)。每个类都应该放在单独的文件中。

【讨论】:

  • 谢谢,删除类并将其放在单独的文件中确实有效。非常感谢!
【解决方案2】:

如果您已经尝试了所有其他方法但仍然收到 Class DatabaseSeeder does not exist,请查看您的 composer.json

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

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

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

所以最终结果是:

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

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

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 2018-11-22
    • 2016-07-12
    • 2015-06-25
    • 2020-03-29
    • 2015-07-12
    • 2022-06-23
    • 2015-09-14
    • 2020-08-07
    相关资源
    最近更新 更多