Lumen 5.6 - php artisan db:seed 出现错误“类 DatabaseSeeder 不存在”

Posted

技术标签:

【中文标题】Lumen 5.6 - php artisan db:seed 出现错误“类 DatabaseSeeder 不存在”【英文标题】:Lumen 5.6 - php artisan db:seed got error 'Class DatabaseSeeder does not exist' 【发布时间】:2018-11-22 12:53:36 【问题描述】:

我正在尝试使用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' =&gt; $baseDir . '/database/seeds/DatabaseSeeder.php' 所以我看起来自动加载工作正常。

我非常感谢任何建议或 cmets。 谢谢。

【问题讨论】:

Lumen 没有播种 DB 的能力,你必须自己实现或切换到 Laravel 我做了php artisan list 发现db:seed 所以以为Lumen 有db 播种功能...谢谢,我尝试另找方法。 【参考方案1】:

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

我设置如下。

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

如下修改这部分后,我可以正确运行db:seed命令。

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

【讨论】:

【参考方案2】:

要解决此问题,您必须调整您的 composer.json 以便 php artisan db:seed 上班

默认情况下,Lumen 已将数据库目录放在 autoload-dev 下。 "autoload-dev": "classmap": [ "tests/", "database/" ] , 为了解决这个问题,只需将类映射与您的数据库目录放在一起自动加载 "autoload": "psr-4": "App\\": "app/" , "classmap": [ "database/" ] ,

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

【讨论】:

谢谢。我修改了composer.json并运行了composer update,但情况并没有改变。【参考方案3】:

您可以将 php artisan db:seed 与流明一起使用。 命令是: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 个示例。 然后你应该创建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();
    

【讨论】:

感谢您的评论。很高兴知道“db:seed”命令确实存在。但是,php artisan db:seed 命令仍然返回“DatabaseSeeder 不存在”错误。 我还是得到了这个:Seeding: UsersTableSeeder In FactoryBuilder.php line 269: Unable to locate factory with name [default] [App\User].

以上是关于Lumen 5.6 - php artisan db:seed 出现错误“类 DatabaseSeeder 不存在”的主要内容,如果未能解决你的问题,请参考以下文章

php artisan migrate 给我 Lumen 错误

Lumen php artisan config:找不到缓存

Lumen (Laravel) Eloquent php artisan make:model 未定义

Lumen Micro Framework => php artisan key:generate

我的 laravel 5.6 项目在 localhost 上打开,但不在 php artisan serve cmd 上打开

Laravel/Lumen - Artisan 控制台中缺少命令