Was ist Seeding
Seeding ist ein Mechanismus, um Beispiel- oder Ausgangsdaten in Ihre Datenbank zu schreiben. Beim Einrichten der Entwicklungsumgebung oder bei automatisierten Tests benötigen Sie oft eine Datenbank in einem vordefinierten Zustand. Statt jedes Mal manuell zu befüllen, bündeln Sie das Vorgehen in Seeder-Klassen. Seeder liegen unterdatabase/seeders. Standardmäßig existiert die Klasse DatabaseSeeder.
Seeder erzeugen
Neue Seeder erzeugen Sie mitmake:seeder.
database/seeders/UserSeeder.php.
Seeder implementieren
Die Logik zur Datenerzeugung schreiben Sie inrun(). Sie können sowohl die DB-Facade als auch Eloquent verwenden.
Mit der DB-Facade
Mit Eloquent
Während des Seedings ist der Mass-Assignment-Schutz automatisch deaktiviert.
$fillable und $guarded müssen Sie nicht beachten.Kombination mit Model Factories
Für viele Testdaten sind Model Factories ideal. Sie erzeugen zufällige Dummy-Daten in Massen.Der DatabaseSeeder
DatabaseSeeder ist der Einstiegspunkt, um mehrere Seeder zu koordinieren. Mit call() bestimmen Sie, welche ausgeführt werden.
users → posts).
Seeder ausführen
Alle ausführen
DatabaseSeeder auf, der die in call() gelisteten Seeder abarbeitet.
Nur einen bestimmten Seeder
Mit--class.
Zusammen mit Migrationen
Mitmigrate:fresh --seed legen Sie alle Tabellen neu an und seeden anschließend.
--seeder.
Ausführung in Produktion
In Produktion erscheint eine Bestätigungsabfrage. Mit--force überspringen Sie sie.
Modell-Events unterdrücken
Um zu verhindern, dass Modell-Events wiecreating/created beim Seeding gefeuert werden, nutzen Sie den Trait WithoutModelEvents.
call() aufgerufenen Sub-Seeder.
Beispiel: Seeder einer Blog-Anwendung
Initialdaten für Nutzer und Beiträge:Nächste Schritte
Einstieg in Eloquent
Nutzen Sie die geseedeten Daten in Ihren Eloquent-Abfragen.