Suche…


Bemerkungen

Durch das Seeding von Datenbanken können Sie Daten und allgemeine Testdaten in Ihre Datenbank einfügen. Standardmäßig gibt es eine DatabaseSeeder Klasse unter database/seeds .

Sämaschinen können mit ausgeführt werden

php artisan db:seed

Oder wenn Sie nur eine Klasse bearbeiten möchten

php artisan db:seed --class=TestSeederClass

Wie bei allen handwerklichen Befehlen haben Sie Zugriff auf eine Vielzahl von Methoden, die Sie in der API-Dokumentation finden

Daten einfügen

Es gibt verschiedene Möglichkeiten, Daten einzufügen:

DB Facade verwenden

public function run()
{
    DB::table('users')
        ->insert([
            'name' => 'Taylor',
            'age'  => 21
        ]);
}

Über das Instantiieren eines Modells

public function run()
{
    $user = new User;
    $user->name = 'Taylor';
    $user->save();
}

Verwenden Sie die Create-Methode

public function run()
{
    User::create([
        'name' => 'Taylor',
        'age'  => 21
    ]);
}

Mit fabrik

public function run()
{
    factory(App\User::class, 10)->create();
}

&& alte Daten löschen und Auto-Inkrement zurücksetzen

public function run()
{
    DB::table('users')->delete();
    DB::unprepared('ALTER TABLE users AUTO_INCREMENT=1;');
    factory(App\User::class, 200)->create();
}

Weitere Informationen zum Einfügen / Aktualisieren von Daten finden Sie im Beispiel für persistent .

Andere Sämaschinen anrufen

Innerhalb Ihrer DatabaseSeeder Klasse können Sie andere Sämaschinen aufrufen

$this->call(TestSeeder::class)

Auf diese Weise können Sie eine Datei aufbewahren, in der Sie Ihre Sämaschinen leicht finden können. Beachten Sie, dass Sie die Reihenfolge Ihrer Anrufe in Bezug auf Fremdschlüsseleinschränkungen beachten müssen. Sie können nicht auf eine Tabelle verweisen, die noch nicht existiert.

Seeder anlegen

Zum Erstellen von Sämaschinen können Sie den Befehl make:seeder Artisan verwenden. Alle generierten Setzer werden im database/seeds Verzeichnis abgelegt.

$ php artisan make:seeder MoviesTableSeeder

Erzeugte Seeders enthalten eine Methode: run . Sie können mit dieser Methode Daten in Ihre Datenbank einfügen.

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class MoviesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        App\Movie::create([
            'name' => 'A New Hope',
            'year' => '1977'
        ]);

        App\Movie::create([
            'name' => 'The Empire Strikes Back',
            'year' => '1980'
        ]);
    }
}

Im Allgemeinen möchten Sie alle Sämaschinen innerhalb der DatabaseSeeder Klasse aufrufen.

Wenn Sie mit dem Schreiben der Sämaschinen fertig sind, verwenden Sie den Befehl db:seed . Dadurch wird die run Funktion von DatabaseSeeder run .

$ php artisan db:seed

Sie können auch angeben, dass eine bestimmte Seeder-Klasse mit der Option --class einzeln ausgeführt werden --class .

$ php artisan db:seed --class=UserSeeder

Wenn Sie alle Migrationen rückgängig machen und erneut ausführen möchten, und dann erneut starten:

$ php artisan migrate:refresh --seed

Der Befehl migrate:refresh --seed ist eine Verknüpfung zu diesen 3 Befehlen:

$ php artisan migrate:reset     # rollback all migrations
$ php artisan migrate           # run migrations
$ php artisan db:seed           # run seeders

Sichere Nachsaat

Möglicherweise möchten Sie Ihre Datenbank erneut säen, ohne die zuvor erstellten Samen zu beeinflussen. Zu diesem Zweck können Sie firstOrCreate in Ihrem Seeder verwenden:

EmployeeType::firstOrCreate([
    'type' => 'manager',
]);

Dann können Sie die Datenbank starten:

php artisan db:seed

Wenn Sie später einen anderen Mitarbeitertyp hinzufügen möchten, können Sie den neuen Mitarbeiter in derselben Datei hinzufügen:

EmployeeType::firstOrCreate([
    'type' => 'manager',
]);
EmployeeType::firstOrCreate([
    'type' => 'secretary',
]);

Und samen Sie Ihre Datenbank erneut ohne Probleme:

php artisan db:seed

Beachten Sie beim ersten Anruf, dass Sie den Datensatz abrufen, aber nichts dagegen tun.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow