Maison  >  Questions et réponses  >  le corps du texte

Comment exécuter le populateur de données après avoir créé avec succès une table dans l'application Laravel ?

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粉764785924P粉764785924185 Il y a quelques jours372

répondre à tous(1)je répondrai

  • P粉921165181

    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.

    répondre
    0
  • Annulerrépondre