...
✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

So führen Sie das Datenbank-Seeding in Laravel durch

208

In der Vergangenheit habe ich einen Artikel zum Seed einer Datenbank in PHP mit der Faker-Bibliothek veröffentlicht. Bei der Recherche zu diesem Thema habe ich festgestellt, dass Laravel dieselbe Bibliothek auch zum Seeding der Datenbank verwendet. Da ich einen Artikel zu diesem Thema für PHP geschrieben habe, habe ich mich entschlossen, auch einen Beitrag zum Laravel-Datenbank-Seeding zu schreiben. Dies liegt daran, dass Laravel einen eigenen Prozess zum Seeding der Datenbank verwendet.

Was ist Database Seeding?

Datenbank-Seeding bedeutet, dass Sie Ihre Datenbanktabellen programmgesteuert mit den Testdaten füllen. Mit diesem Ansatz kann man innerhalb weniger Minuten Tausende von Datensätzen in die Datenbank eingeben. Es ist ein effizienter Weg, anstatt es manuell zu tun. Vielleicht möchten Sie Dummy-Daten, um Ihre Anwendung zu testen, und das Seeding der Datenbank durch das Programm spart Ihnen eine Menge Zeit.

Faker-Bibliothek

Faker ist eine Open-Source-Bibliothek, die gefälschte Daten für die Datenbank Ihrer Anwendung generiert. Mit Faker kann man in wenigen Minuten Tausende von Einträgen in die Datenbank einfügen. Diese Bibliothek erspart Entwicklern eine langweilige Dateneingabe. Sie können fast jede Art von Daten erhalten, die Sie möchten. Die Bibliothek generiert eine gefälschte E-Mail, einen Namen, eine Handynummer, Wörter, Sätze, Absätze, Zufallszahlen usw. Sie können die Art der von ihnen bereitgestellten Daten in der Dokumentation lesen .

Laravel installiert diese Bibliothek im Kern. Das bedeutet, dass Sie es nicht separat installieren müssen. Lassen Sie uns jedoch einen Blick darauf werfen, wie Sie das Datenbank-Seeding in Laravel durchführen.

Einstieg

Um zu beginnen, werde ich eine ‘Kunden’-Tabelle mit den Spalten Name, E-Mail und Bio erstellen. Wir werden den Prozess des Seedings der einzelnen Tabelle sehen. Auf die gleiche Weise können Benutzer beliebig viele Tabellen mit einem Seeding versehen.

Erstellen Sie eine Migration für Kundentabelle mit dem Befehl:

php artisan make:migration create_customers_table

Öffnen Sie die Migrationsdatei und fügen Sie die Spalten wie unten gezeigt zur ‘up’-Methode hinzu.

public function up()
{
    Schema::create('customers', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->string('email');
        $table->text('bio');
        $table->timestamps();
    });
}

Führen Sie den Migrationsbefehl aus, der eine ‘customers’-Tabelle in Ihrer Datenbank erstellt.

php artisan migrate

Erstellen Sie als Nächstes ein Modell ‘Customer’, das der Tabelle ‘customers’ zugeordnet ist. Ab Laravel 8.x werden Ihre Modelle im Verzeichnis ‘App/Models’ erstellt. Für dieses Tutorial gehe ich davon aus, dass Sie Laravel 8.x verwenden. In der älteren Version von Laravel müssen Sie den Modellpfad anpassen.

php artisan make:model Customer

Datenbank-Seeding in Laravel

Das Seeding einer Datenbank in Laravel erfordert, dass Sie einige Schritte ausführen, nämlich Seeder schreiben, eine Modellfabrik erstellen und Seeder ausführen. Machen wir es nacheinander.

Seeder schreiben

Wenn Sie sich das Laravel-Dateisystem ansehen, dann bemerken Sie das Verzeichnis database/seeders. Alle Seed-Klassen gehen in dieses Verzeichnis. Eine Seed-Klasse hat die runMethode, von der aus Sie die Daten in die Tabelle einfügen können.

Erstellen Sie eine Seed-Klasse CustomerSeeder mit dem Befehl:

php artisan make:seeder CustomerSeeder

Nachdem Sie diesen Befehl ausgeführt haben, sollten Sie die CustomerSeeder.phpDatei sehen, die unter erstellt wurde database/seeders. Öffnen Sie diese Datei und runfügen Sie der Funktion den folgenden Code hinzu.

public function run()
{
    AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
        $customer->save();
    });
}

Hier rufe ich die Kundenfabrik auf, die wir im nächsten Schritt erstellen werden. Beachten Sie, dass ich den Wert 50 an die Methode "count" übergeben habe. Das bedeutet, dass 50 Zeilen in die Tabelle ‘Kunden’ eingefügt werden sollten. Passen Sie diesen Wert nach Belieben an.

Fabriken erstellen

Der Code, den ich geschrieben habe CustomerSeeder, sucht nach einer Fabrik, um die Testdaten zu erhalten. Das bedeutet, dass wir eine Modellfabrik schaffen müssen. Ich werde der Fabrik einen Namen als CustomerFactory geben. Führen Sie den Befehl aus, um die Modellfactory zu generieren.

php artisan make:factory CustomerFactory --model=Customer

Dieser Befehl erstellt eine CustomerFactory.phpinnerhalb des database/factoriesVerzeichnisses. Öffnen Sie diese Datei und generieren Sie zur Definitionsmethode wie folgt Testdaten.

public function definition()
{
    return [
        'name' => $this->faker->name,
        'email' => $this->faker->unique()->safeEmail,
        'bio' => $this->faker->text,
    ];
}

Das obige Array gibt einen zufällig ausgewählten Namen, eine E-Mail und einen Text für die Bio zurück.

Laufende Sämaschinen

Wir haben alle mit der Sämaschine und der Fabrik eingestellt. Führen Sie nun unseren Seeder mit dem folgenden Befehl aus.

php artisan db:seed --class=CustomerSeeder

Überprüfen Sie Ihre ‘Kunden’-Tabelle und sie sollten die 50 Dummy-Einträge eingefügt haben.

Der obige Befehl führt einen einzelnen Seeder aus, den wir explizit übergeben haben. Angenommen, Sie möchten mehrere Seeder erstellen und alle mit einem einzigen Befehl ausführen. In solchen Fällen sollten Sie Ihre Seeder von der aus aufrufen, DatabaseSeederdie sich im selben Verzeichnis befindet database/seeders.

public function run()
    {
        $this->call(CustomerSeeder::class);
        // call as many seeders you wish
    }

Der Benutzer kann so viele Seeder nach seinen Anforderungen erstellen und über diese runMethode aufrufen .

Führen Sie schließlich die Seeder mit dem folgenden Befehl aus.

php artisan db:seed

Es ruft alle Seeder aus der runMethode auf und führt sie aus.

Ich hoffe, Sie verstehen das Datenbank-Seeding in Laravel. Ich würde gerne Ihre Gedanken und Vorschläge im Kommentarbereich unten hören.

Zum Thema passende Artikel

Aufnahmequelle: artisansweb.net

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen