ReflectionException - 类DatabaseSeeder不存在,Laravel Seeder

时间:2015-05-23 02:42:45

标签: php laravel migration eloquent

我在不同的文件夹中有数据库播种器。当我写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 

但不起作用。

正如您所看到的,我在同一名称空间中都有两个clases。

请帮助。

6 个答案:

答案 0 :(得分:6)

如果您最近升级了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

答案 1 :(得分:2)

将它全部放在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
        ));
    }
}

答案 2 :(得分:1)

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

然后它会正常工作。

答案 3 :(得分:0)

解决:添加

namespace database \ seeds;

然后运行命令:

composer dump-autoload --no-dev

答案 4 :(得分:0)

您应该将此行添加到 getResponse 内的 composer.json 文件中:

"psr-4"

这意味着应该是这样的:

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

答案 5 :(得分:-1)

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

composer dump-autoload --no-dev

source