Sök…


Anmärkningar

Med sådd av databaser kan du infoga data, allmänna testdata i din databas. Som standard finns det en DatabaseSeeder klass under database/seeds .

Löpande såmaskiner kan göras med

php artisan db:seed

Eller om du bara vill bearbeta en enda klass

php artisan db:seed --class=TestSeederClass

Som med alla hantverkskommandon, har du tillgång till ett brett utbud av metoder som finns i api-dokumentationen

Infoga data

Det finns flera sätt att infoga data:

Använda DB-fasaden

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

Via Instantiating a Model

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

Med hjälp av skapa-metoden

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

Använda fabriken

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

Seeding && radera gamla data och återställa automatisk inkrement

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

Se Persisting- exemplet för mer information om infoga / uppdatera data.

Ringer andra såmaskiner

Inom din DatabaseSeeder klass kan du ringa andra såmaskiner

$this->call(TestSeeder::class)

Detta gör att du kan hålla en fil där du enkelt kan hitta dina såmaskiner. Tänk på att du måste vara uppmärksam på ordningen på dina samtal när det gäller utländska nyckelbegränsningar. Du kan inte referera till en tabell som inte finns ännu.

Skapa en Seeder

För att skapa såmaskiner kan du använda kommandot make:seeder Artisan. Alla fräsar som genereras kommer att placeras i database/seeds .

$ php artisan make:seeder MoviesTableSeeder

Genererade såmaskiner kommer att innehålla en metod: run . Du kan infoga data i din databas på den här metoden.

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

Vanligtvis vill du ringa alla dina såmaskiner i klassen DatabaseSeeder .

När du är klar med att skriva seeders använder du kommandot db:seed . Detta kommer att köra DatabaseSeeder 's run funktion.

$ php artisan db:seed

Du kan också specificera för att köra en specifik seederklass för att köra individuellt med alternativet --class .

$ php artisan db:seed --class=UserSeeder

Om du vill rulla tillbaka och köra om alla migreringar och sedan resa:

$ php artisan migrate:refresh --seed

Kommandot migrate:refresh --seed är en genväg till dessa migrate:refresh --seed kommandon:

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

Säker nyinläggning

Du kanske vill sätta ny databas utan att påverka dina tidigare skapade frön. För detta ändamål kan du använda firstOrCreate i din seeder:

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

Sedan kan du se till databasen:

php artisan db:seed

Senare, om du vill lägga till en annan typ av anställd, kan du bara lägga till den nya i samma fil:

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

Och frö din databas igen utan problem:

php artisan db:seed

Lägg märke till i det första samtalet du hämtar posten men gör ingenting med det.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow