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-autoload
、composer dump-autoload -o
、composer dump-autoload --no-dev
,但情况从未改变。
我还检查了我的 composer/autoload_classmap.php
并且有 'DatabaseSeeder' => $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 上打开