Recherche…


Remarques

L'ensemencement de base de données vous permet d'insérer des données, des données de test générales dans votre base de données. Par défaut, il existe une classe DatabaseSeeder sous database/seeds .

Les semoirs en cours d'exécution peuvent être faits avec

php artisan db:seed

Ou si vous voulez seulement traiter une seule classe

php artisan db:seed --class=TestSeederClass

Comme pour toutes les commandes artisanales, vous avez accès à un large éventail de méthodes disponibles dans la documentation de l' API.

Insérer des données

Il existe plusieurs manières d’insérer des données:

Utiliser la façade DB

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

Via l'instanciation d'un modèle

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

Utiliser la méthode create

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

En utilisant l'usine

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

Amorçage && suppression d'anciennes données et réinitialisation de l'incrémentation automatique

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

Voir l'exemple persistant pour plus d'informations sur l'insertion / mise à jour des données.

Appeler d'autres semoirs

Dans votre classe DatabaseSeeder , vous pouvez appeler d’autres

$this->call(TestSeeder::class)

Cela vous permet de garder un fichier où vous pouvez facilement trouver vos semoirs. Gardez à l'esprit que vous devez faire attention à l'ordre de vos appels concernant les contraintes de clés étrangères. Vous ne pouvez pas référencer un tableau qui n'existe pas encore.

Créer un semoir

Pour créer des semoirs, vous pouvez utiliser la commande make:seeder Artisan. Tous les semoirs générés seront placés dans le répertoire database/seeds .

$ php artisan make:seeder MoviesTableSeeder

Les semences générées contiendront une méthode: run . Vous pouvez insérer des données dans votre base de données avec cette méthode.

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

Vous voudrez généralement appeler tous vos classeurs dans la classe DatabaseSeeder .

Une fois que vous avez fini d'écrire les graisseurs, utilisez la commande db:seed . Cela se déroulera DatabaseSeeder de run fonction.

$ php artisan db:seed

Vous pouvez également spécifier d'exécuter une classe de --class spécifique pour s'exécuter individuellement à l'aide de l'option --class .

$ php artisan db:seed --class=UserSeeder

Si vous souhaitez restaurer et réexécuter toutes les migrations, puis ré-émettre:

$ php artisan migrate:refresh --seed

La commande migrate:refresh --seed est un raccourci vers ces 3 commandes:

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

Réensemencement sûr

Vous voudrez peut-être redéposer votre base de données sans affecter vos graines déjà créées. Pour cela, vous pouvez utiliser firstOrCreate dans votre semoir:

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

Ensuite, vous pouvez amorcer la base de données:

php artisan db:seed

Plus tard, si vous souhaitez ajouter un autre type d’employé, vous pouvez simplement l’ajouter dans le même fichier:

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

Et semer à nouveau votre base de données sans aucun problème:

php artisan db:seed

Notez dans le premier appel que vous récupérez l'enregistrement mais ne faites rien avec lui.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow