Los seeders nos facilitan la creación de datos falsos para hacer pruebas. Exactamente, lo que se puede hacer con los seeders es generar datos falsos y que se guarden en la base de datos, con esto ya no tendremos que ir insertando uno por uno los datos de prueba en la base de datos.
Primero tenemos que crear el fichero para el seeder, lo haremos mediante un comando de artisan:
1 |
php artisan make:seeder UsersTableSeeder |
Y le ponemos este código en la función run():
1 2 3 4 5 6 7 8 9 10 |
//arriba del todo del fichero use App\User; use App\Post; ... //create 5 user and 30 posts for each user factory(User::class, 5)->create()->each(function($u) { factory(Post::class, 30)->create(['user_id'=>$u->id]); }); |
Este código lo que hace es generar 5 usuarios y asignar a cada usuario 30 posts.
Y ponemos esta línea en DatabaseSeeder.php en la función run(), para que se ejecute cuando ejecutemos los seeders:
1 |
$this->call(UsersTableSeeder::class); |
Para indicar que tipo de datos se van a insertar en la base de datos, tenemos que ponerlo en el archivo database/factories/ModelFactory.php :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// tipos datos para usuarios $factory->define(App\User::class, function (Faker\Generator $faker) { static $password; return [ 'name' => $faker->name, 'email' => $faker->unique()->safeEmail, 'password' => $password ?: $password = bcrypt('123456'), 'remember_token' => str_random(10), 'country' => $faker->word, ]; }); // tipo datos para posts $factory->define(App\Post::class, function (Faker\Generator $faker) { return [ 'title' => $faker->sentence(8), 'body' => $faker->paragraph(2), 'user_id' => function() { return factory(App\User::class)->create()->id; }, ]; }); |
El código es bastante descriptivo. Si quieres ver todos los tipos de datos que se admiten puedes verlos aquí.
Para ejecutar los seeders, tendremos que hacerlo mediante la línea de comandos:
1 |
php artisan db:seed |
Si todo sale bien, ya tendríamos en nuestra base de datos la información y así ahorraríamos mucho tiempo a la hora de crear datos de prueba.
-
– Seeders: https://laravel.com/docs/5.4/seeding