我正在 Laravel 8 中开发一个博客应用程序。
我正在准备将其部署在实时服务器上,并且我希望部署过程非常用户友好。
为此,我一直在为该应用程序开发一个“安装程序”:
在 routes\web.php
我有:
Route::get('/install', [InstallController::class, 'index']);
在 app\Http\Controllers\InstallController.php
中,我有这段代码,以便运行迁移如果没有用户表:
class InstallController extends Controller { public function index() { if (!Schema::hasTable('users')) { Artisan::call('migrate'); } return redirect('/register')->with('success', 'Way to go! You can create an account.'); } }
上面的代码有效,所有表都已创建,并且邀请(第一个)用户注册。
问题是我还没有找到一种方法让控制器在成功创建表后运行数据库播种器。
您可以通过运行
php artisan db:seed
或通过Artisan
外观来完成此操作,例如Artisan::call('db:seed');
您的代码将是:
来源: https://laravel.com/docs/9.x/seeding#running-播种机
但是,我建议不要走这条路,而是创建将为您完成所有这些操作的部署脚本。与此一样,您将此路由暴露给将使用该应用程序的所有用户,恶意用户可以利用它。