简体   繁体   English

ReflectionException - 类 DatabaseSeeder 不存在,Laravel Seeder

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

I have database seeder clases in diferent folder.我在不同的文件夹中有数据库播种机类。 When i write db:seed the console shows this error:当我写 db:seed 时,控制台显示此错误:

[ReflectionException]   Class DatabaseSeeder does not exist , Laravel Seeder

One class is this:一类是这样的:

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

}

and my other class is我的另一堂课是

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
        ));
    }
}

I've tried to use我试过用

composer dump-autoupload 

but doesn't work.但不起作用。

As you can see, I have both clases in the same namespace.如您所见,我在同一个命名空间中有两个类。

Help please.请帮忙。

If you've recently upgraded your Laravel version, check your composer.json如果您最近升级了 Laravel 版本,请检查您的 composer.json

Your "autoload" section should look something like the snippet below您的“自动加载”部分应该类似于下面的代码段

NOTE: you may have to add the "database" entry under the "classmap"注意:您可能需要在“classmap”下添加“database”条目

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

You should then run composer dumpautoload and try php artisan db:seed然后你应该运行composer dumpautoload并尝试php artisan db:seed

Just put it all in the DatabaseSeeder.php file like this:只需将其全部放入 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
        ));
    }
}

remove your namespace definition in two classes, and use "composer dump-autoload".删除两个类中的命名空间定义,并使用“composer dump-autoload”。

Then it will works fine.然后它会正常工作。

Solved: by adding解决:通过添加

namespace database\\seeds;命名空间数据库\\种子;

and then running command:然后运行命令:

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

You should add this line into composer.json file inside "psr-4" :您应该将此行添加到"psr-4"内的composer.json文件中:

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

it means that should be something like:这意味着应该是这样的:

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

Also make sure database folder exist inside your project.还要确保项目中存在数据库文件夹。 If you accidently delete the database folder and run migration command.如果您不小心删除了数据库文件夹并运行迁移命令。 You will get this error too.你也会得到这个错误。

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

Does adding the --no-dev flag help?添加 --no-dev 标志有帮助吗?

composer dump-autoload --no-dev

source 来源

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

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