我尝试使用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'
,所以我看起来像autoload工作正常。
我非常感谢任何建议或意见。 谢谢。
答案 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';