Wie führe ich den Datenpopulator aus, nachdem ich erfolgreich eine Tabelle in der Laravel-App erstellt habe?
P粉764785924
P粉764785924 2024-03-30 19:16:25
0
1
367

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粉764785924
P粉764785924

Antworte allen(1)
P粉921165181

您可以通过运行 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-播种机

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!