Introducción

Laravel incluye un método sencillo para alimentar tu base de datos con datos de prueba usando clases Seeder. Todas las clases Seeder son almacenadas en el directorio database/seeds. Las clases Seeder pueden tener cualquier nombre que desees, pero deberías seguir probablemente alguna convención razonable, tales como UsersTableSeeder etc. De forma predeterminada, una clase DatabaseSeeder se define para ti. A partir de esta clase, puedes usar el método call para registrar otras clases seeder, permitiendo que controles el orden en que se ejecutan.

Escribiendo seeders

Para generar un seeder, ejecuta el Comando Artisan make:seeder. Todos los seeders generados por el framework serán colocados en el directorio database/seeds:

php artisan make:seeder UsersTableSeeder

Una clase seeder contiene solamente un método de forma predeterminada: run. Este método es llamado cuando el comando Artisan db:seed se ejecuta. Dentro del método run, puedes insertar datos en tu base de datos en la forma que desees. Puedes usar el constructor de consultas para insertar datos manualmente o puedes usar los Model Factories de Eloquent.

La protección de asignación masiva es deshabilitada automáticamente durante el seeding de la base de datos.

Como un ejemplo, vamos a modificar la clase DatabaseSeeder predeterminada y agregar una instrucción insert al método run:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;

class DatabaseSeeder extends Seeder
{
    /**
    * Run the database seeds.
    *
    * @return void
    */
    public function run()
    {
        DB::table('users')->insert([
            'name' => Str::random(10),
            'email' => Str::random(10).'@gmail.com',
            'password' => Hash::make('password'),
        ]);
    }
}

Puedes definir cualquier dependencia que necesites dentro de la firma del método run. Se resolverán automáticamente a través del contenedor de servicio de Laravel.

Regístrate en Styde

Para obtener acceso a ésta y a todas nuestras lecciones y cursos premium:

Ver planes

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.

Lección anterior Base de datos: Migraciones - Documentación de Laravel 6 Lección siguiente Redis - Documentación de Laravel 6