Comment exécuter le populateur de données après avoir créé avec succès une table dans l'application Laravel ?
P粉764785924
P粉764785924 2024-03-30 19:16:25
0
1
425

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.

Question

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.

Comment y parvenir de manière simple et conviviale ?

P粉764785924
P粉764785924

répondre à tous(1)
P粉921165181

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal