meta data for this page
Laravel
Seeding
(remplir automatiquement sa base de données)
Créer un Seed
php artisan make:seeder UsersTableSeederCela va créer un fichier de seed dans le dossier
/database/seeds
Fichier ⇒ UsersTableSeeder.php
Pour mettre des informations aléatoires
public function run() { DB::table('users')->insert([ 'name' => Str::random(10), 'email' => Str::random(10).'@gmail.com', 'password' => bcrypt('secret'), ]); }
Pour mettre des informations
use Illuminate\Database\Seeder; use Carbon\Carbon; use Illuminate\Support\Facades\DB; class UsersTableSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { DB::table('users')->insert([ 'name' => 'gilles', 'email' => 'gilles@domaine.com', 'password' => bcrypt('admin'), 'created_at' => Carbon::now()->format('Y-m-d H:i:s'), 'updated_at' => Carbon::now()->format('Y-m-d H:i:s'), ]); DB::table('users')->insert([ 'name' => 'gael', 'email' => 'gael@domaine.com', 'password' => bcrypt('user'), 'created_at' => Carbon::now()->format('Y-m-d H:i:s'), 'updated_at' => Carbon::now()->format('Y-m-d H:i:s'), ]); DB::table('users')->insert([ 'name' => 'romane', 'email' => 'romane@domaine.com', 'password' => bcrypt('user'), 'created_at' => Carbon::now()->format('Y-m-d H:i:s'), 'updated_at' => Carbon::now()->format('Y-m-d H:i:s'), ]); } }
Pour gérer les dates et les heures, on utilise la bibliothèque Carbon ⇒ https://carbon.nesbot.com/docs/
Prérequis
Afin de mettre à jour l'autoloader (système qui charge les Class automatiquement), il faut faire
composer dump-autoload
Lancer le Seed
Afin de pouvoir lancer tous les seeds, il faut ajuster le fichier database/seeds/DatabaseSeeder.php
. Dans cette exemple, on ajoute trois seeds précédemment créés: Users
, Posts
et Categories
class DatabaseSeeder extends Seeder { public function run() { $this->call(UsersTableSeeder::class); $this->call(PostsTableSeeder::class); $this->call(CategoriesTableSeeder::class); } }
Puis dans le terminal, on peut lancer les seeds
php artisan db:seed
Si on souhaite lancer un seul seed, il faut le préciser comme ceci:
php artisan db:seed --class=UsersTableSeeder
Lancer la migration + le seed
php artisan migrate:refresh --seed
Utiliser une factory
Voir l'exemple dans le fichier
\database\factories\UserFactory.php
Utilise la bibliothèque Faker afin de générer des fausses données.
Dans le fichier
\database\seeders\DatabaseSeeder.php
On configure le nombre de fois que l'on veut exécuter la Factory
public function run() { \App\Models\User::factory(10)->create(); }
Puis on lance le seed
php artisan db:seed --class=UsersTableSeeder