Lumen 5.6 - php artisan db:种子出错' Class DatabaseSeeder不存在'

时间:2018-06-13 03:44:38

标签: php laravel lumen artisan

我尝试使用Lumen 5.6.3播种并执行命令: php artisan db:seed

然后我得到了错误,说

In Container.php line 767:
Class DatabaseSeeder does not exist

在我的database/seeds目录中,DatabaseSeeder.php确实存在。 我刚刚在Lumen的官方文档中复制了源代码,源代码如下所示。

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
    }
}

我已多次用谷歌搜索来解决此错误,当然多次尝试composer dump-autoloadcomposer dump-autoload -ocomposer dump-autoload --no-dev并且情况从未改变过。

我还检查了我的composer/autoload_classmap.php并且'DatabaseSeeder' => $baseDir . '/database/seeds/DatabaseSeeder.php',所以我看起来像autoload工作正常。

我非常感谢任何建议或意见。 谢谢。

3 个答案:

答案 0 :(得分:2)

要解决此问题,您必须调整composer.json才能 php artisan db:seed 工作

默认情况下,Lumen将数据库目录放置在autoload-dev下。
"autoload-dev": { "classmap": [ "tests/", "database/" ] },

为了解决这个问题,只需将类映射与数据库目录一起自动加载

"autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/" ] },

调整后,运行composer update命令以使调整生效。

答案 1 :(得分:1)

你可以使用php artisan db:seed with lumen。 命令是:php artisan make:seeder Seedername。 例如,您可以使用php artisan make:seeder UsersTableSeeder为用户创建表播种器。 该文件将在database \ seeds。文件夹中创建。

use Illuminate\Database\Seeder;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\User::class, 10)->create();
    }
}

这将为用户类创建10个示例。 然后你应该cinfigure databaseseeder文件

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        Model::unguard();
        // Register the user seeder
        $this->call(UsersTableSeeder::class);
        Model::reguard();
    }
}

答案 2 :(得分:0)

我为bootstrap / app.php设置了错误的值。

我设置如下。

require_once __DIR__.'/../../vendor/autoload.php';

像下面一样修改了这部分之后,我可以正确运行db:seed命令。

require_once __DIR__.'/../vendor/autoload.php';