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.
Vous pouvez le faire en courant
php artisan db:seed
或通过Artisan
外观来完成此操作,例如Artisan::call('db:seed');
Votre code sera :
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.