Lumen 5.6 - php artisan db:seed 出现错误 'Class DatabaseSeeder does not exist'
Lumen 5.6 - php artisan db:seed got error 'Class DatabaseSeeder does not exist'
我正在尝试使用 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'
所以我看起来自动加载工作正常。
非常感谢任何建议或评论。
谢谢。
您可以将 php artisan db:seed 与流明一起使用。
命令是:php artisan make:seeder Seedername。
例如,您可以使用 php artisan make:seeder UsersTableSeeder 为用户创建 table 播种机。
该文件将在文件夹 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();
}
}
这将为用户 class 创建 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();
}
}
要解决此问题,您必须调整 composer.json 以便
php artisan db:seed
上班
默认情况下,Lumen 已将数据库目录放在autoload-dev 下。
"autoload-dev": {
"classmap": [
"tests/",
"database/"
]
},
要解决这个问题,只需将类映射与您的数据库目录一起放在自动加载下
"autoload": {
"psr-4": {
"App\": "app/"
},
"classmap": [
"database/"
]
},
在调整 运行 composer update
命令后才能使调整生效。
我为 bootstrap/app.php.
设置了错误的值
我是这样设置的
require_once __DIR__.'/../../vendor/autoload.php';
像下面这样修改这部分后,我可以运行db:seed
命令正确。
require_once __DIR__.'/../vendor/autoload.php';
我正在尝试使用 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'
所以我看起来自动加载工作正常。
非常感谢任何建议或评论。 谢谢。
您可以将 php artisan db:seed 与流明一起使用。 命令是:php artisan make:seeder Seedername。 例如,您可以使用 php artisan make:seeder UsersTableSeeder 为用户创建 table 播种机。 该文件将在文件夹 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();
}
}
这将为用户 class 创建 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();
}
}
要解决此问题,您必须调整 composer.json 以便
php artisan db:seed
上班
默认情况下,Lumen 已将数据库目录放在autoload-dev 下。
"autoload-dev": {
"classmap": [
"tests/",
"database/"
]
},
要解决这个问题,只需将类映射与您的数据库目录一起放在自动加载下
"autoload": {
"psr-4": {
"App\": "app/"
},
"classmap": [
"database/"
]
},
在调整 运行 composer update
命令后才能使调整生效。
我为 bootstrap/app.php.
设置了错误的值我是这样设置的
require_once __DIR__.'/../../vendor/autoload.php';
像下面这样修改这部分后,我可以运行db:seed
命令正确。
require_once __DIR__.'/../vendor/autoload.php';