Maison > Questions et réponses > le corps du texte
Je développe une application de blog dans Laravel 8.
Je me prépare à le déployer sur un serveur live et je souhaite que le processus de déploiement soit très convivial.
Pour ce faire, j'ai développé un "installateur" pour l'application :
En routesweb.php
j'ai :
Route::get('/install', [InstallController::class, 'index']);
Dans appHttpControllersInstallController.php
j'ai ce code afin de lancer la migration s'il n'y a pas d'utilisateur table :
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.'); } }
Le code ci-dessus fonctionne, toutes les tables sont créées et le (premier) utilisateur est invité à s'inscrire.
Le problème est que je n'ai pas trouvé de moyen pour que le contrôleur exécute le semoir de la base de données après avoir créé avec succès la table.
P粉9211651812024-03-31 09:43:48
Vous pouvez le faire en courant php artisan db:seed
或通过 Artisan
外观来完成此操作,例如 Artisan::call('db:seed');
Votre code sera :
class InstallController extends Controller { public function index() { if (!Schema::hasTable('users')) { Artisan::call('migrate'); Artisan::call('db:seed'); } return redirect('/register')->with('success', 'Way to go! You can create an account.'); } }
Source : https://laravel.com/docs/9.x/seeding#running-seeder
Cependant, je vous recommande de ne pas suivre cette voie et de créer plutôt un script de déploiement qui fera tout cela pour vous. Ainsi, vous exposez cette route à tous les utilisateurs qui utiliseront l’application, et des utilisateurs malveillants peuvent l’exploiter.