繁体   English   中英

ReflectionException - 类 DatabaseSeeder 不存在,Laravel Seeder

[英]ReflectionException - Class DatabaseSeeder does not exist , Laravel Seeder

我在不同的文件夹中有数据库播种机类。 当我写 db:seed 时,控制台显示此错误:

[ReflectionException]   Class DatabaseSeeder does not exist , Laravel Seeder

一类是这样的:

namespace Database\Seeds;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

use TiposCompromisosTableSeeder;

class DatabaseSeeder extends Seeder {

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

            Eloquent::unguard();

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

}

我的另一堂课是

namespace Database\Seeds;

use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class TiposCompromisosTableSeeder extends Seeder{

    public function run(){

        DB::table('tipos')->insert(array(
            'nombre' => 'prioridad',
            'tabla' => 'compromisos',
            'str1' => 'baja',
            'int1' => 1
        ));
    }
}

我试过用

composer dump-autoupload 

但不起作用。

如您所见,我在同一个命名空间中有两个类。

请帮忙。

如果您最近升级了 Laravel 版本,请检查您的 composer.json

您的“自动加载”部分应该类似于下面的代码段

注意:您可能需要在“classmap”下添加“database”条目

"autoload": {
        "classmap": [
          "app/Library",
          "app/Models",
          "database"
        ],
        "psr-4": {
            "App\\": "app/"
        },
        "files": [
            "app/Library/helpers.php"
        ]
    },

然后你应该运行composer dumpautoload并尝试php artisan db:seed

只需将其全部放入 DatabaseSeeder.php 文件中,如下所示:

use Illuminate\Support\Facades\DB;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class DatabaseSeeder extends Seeder {

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

            Eloquent::unguard();

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

}

class TiposCompromisosTableSeeder extends Seeder{

    public function run(){

        DB::table('tipos')->insert(array(
            'nombre' => 'prioridad',
            'tabla' => 'compromisos',
            'str1' => 'baja',
            'int1' => 1
        ));
    }
}

删除两个类中的命名空间定义,并使用“composer dump-autoload”。

然后它会正常工作。

解决:通过添加

命名空间数据库\\种子;

然后运行命令:

作曲家转储自动加载 --no-dev

您应该将此行添加到"psr-4"内的composer.json文件中:

"Database\\Seeders\\": "database/seeders/"

这意味着应该是这样的:

"autoload": {
    "psr-4": {
        "App\\": "app/",
        "Modules\\": "Modules/",
        "Database\\Seeders\\": "database/seeders/"
    }
},

还要确保项目中存在数据库文件夹。 如果您不小心删除了数据库文件夹并运行迁移命令。 你也会得到这个错误。

只需要进行一次更改,将文件夹种子重命名为播种机。

添加 --no-dev 标志有帮助吗?

composer dump-autoload --no-dev

来源

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM