我有以下路线:
Route::get('/beneficiaries/seed', function () {
echo "<p>Database seeding started...</p>";
$exitCode = Artisan::call('db:seed');
echo "<p>Database seeding completed.</p>";
});
在我的本地环境中,当我访问“ /受益人/种子”时,它将为数据库添加种子.但是,如果我在生产中也这样做,那就不会.我只是复制了播种器类和路由文件.
DatabaseSeeder:
class DatabaseSeeder extends Seeder
{
public function run()
{
$this->call(BeneficiariesTableSeeder::class);
}
}
受益人表播客:
class BeneficiariesTableSeeder extends Seeder
{
public function run()
{
//seeding logic...
}
}
为什么我的生产Artisan命令无法执行? (我没有使用过数据库事务.即使没有它,由于没有引发err,本地db也被植入了种子.)
解决方法:
在生产环境中运行php artisan db:seed时,会出现一条警告,询问您是否确定要在生产环境中播种数据库.
生产中的此警告确认是Artisan :: call(‘db:seed’)在生产中不起作用的原因.
为了避免警告,您可以使用–force标志,如下所示:php artisan db:seed –force.
解
要在代码中执行相同的操作,请使用Artisan :: call(‘db:seed’,[‘–force’=> true]);