Heim  >  Fragen und Antworten  >  Hauptteil

Wie führe ich den Datenpopulator aus, nachdem ich erfolgreich eine Tabelle in der Laravel-App erstellt habe?

Ich entwickle eine Blogging-Anwendung in Laravel 8.

Ich bereite die Bereitstellung auf einem Live-Server vor und möchte, dass der Bereitstellungsprozess sehr benutzerfreundlich ist.

Dazu habe ich einen „Installer“ für die Anwendung entwickelt:

In routesweb.php habe ich:

Route::get('/install', [InstallController::class, 'index']);

In appHttpControllersInstallController.php habe ich diesen Code, um die Migration auszuführen wenn es keine Benutzertabelle gibt:

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.');
    }
}

Der obige Code funktioniert, alle Tabellen werden erstellt und der (erste) Benutzer wird zur Registrierung eingeladen.

Frage

Das Problem ist, dass ich keine Möglichkeit gefunden habe, den Controller den Datenbank-Seeder ausführen zu lassen, nachdem die Tabelle erfolgreich erstellt wurde.

Wie erreicht man dies auf einfache und freundliche Weise?

P粉764785924P粉764785924226 Tage vor412

Antworte allen(1)Ich werde antworten

  • P粉921165181

    P粉9211651812024-03-31 09:43:48

    您可以通过运行 php artisan db:seed 或通过 Artisan 外观来完成此操作,例如 Artisan::call('db:seed');

    您的代码将是:

    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.');
        }
    }
    

    来源: https://laravel.com/docs/9.x/seeding#running-播种机

    但是,我建议不要走这条路,而是创建将为您完成所有这些操作的部署脚本。与此一样,您将此路由暴露给将使用该应用程序的所有用户,恶意用户可以利用它。

    Antwort
    0
  • StornierenAntwort