DEV Community

Diego
Diego

Posted on

Generar datos de pruebas en un proyecto con Laravel 10

Había leído muchas veces sobre este tema, pero no me había puesto a generar datos de pruebas con Laravel 10. Al final lo he conseguido, y quiero compartirlo.

Vamos a necesitar dos clases. Una clase de tipo Factory y otra clase de tipo Seeder. La primera nos servirá para definir cómo va a ser cada fila, y la segunda, creamos las filas que necesitemos.

En el ejemplo que voy a usar, vamos a imaginar que vamos a crear revisores para las comunicaciones de un congreso.

Factory

Lanzamos primero el comando para crear la clase Factory:

php artisan make:factory RevisorFactory -m Revisor
Enter fullscreen mode Exit fullscreen mode

Ahora creamos la definición:

 public function definition()
    {
        return [
            'congreso' => 'test',
            'user_id' => 1,
            'email' => $this->faker->unique()->safeEmail,
            'genero' => $this->faker->numberBetween(1, 2),   
            'nombre' => $this->faker->firstName,
            'apellido1' => $this->faker->lastName,
            'apellido2' => $this->faker->lastName,
            'pais_trabajo_id' => 'ES',
            'provincia_trabajo_id' => $this->faker->numberBetween(1, 50),

        ];
    }
Enter fullscreen mode Exit fullscreen mode

Seeder

Creamos la clase Seeder:

php artisan make:seeder RevisorSeeder
Enter fullscreen mode Exit fullscreen mode

Y creamos su definición para en este caso, generar 20 revisores:

public function run()
    {
        Revisor::factory()
            ->count(20)
            ->create();
    }
Enter fullscreen mode Exit fullscreen mode

Creamos los datos de prueba

A continuación, lanzamos este comando, y se generarán en la base de datos 20 revisores con la definición que hayamos especificado:

php artisan db:seed --class=RevisorSeeder
Enter fullscreen mode Exit fullscreen mode

Localización en español

Si queremos localizar en español los datos, debemos especificar la clave siguiente en nuestro fichero .env

FAKER_LOCALE=es_ES
Enter fullscreen mode Exit fullscreen mode

Extra: Asociamos temas a los revisores

Si queremos asociar temas a los revisores recién creados, una forma de hacerlo es modificando el Seeder:

public function run()
    {
        Revisor::factory()
            ->count(20)
            ->create();

        //Asociamos temas a los revisores
        $revisores = Revisor::whereCongreso('test')->get();

        foreach ($revisores as $r) {
            //Selecciono un numero aleatorio de temas
            $num_temas = rand(1, 10);
            //Selecciono los temas
            $temas = Tema::inRandomOrder()->take($num_temas)->get();
            //Asocio los temas al revisor
            $r->temas()->attach($temas);
        }
    }
Enter fullscreen mode Exit fullscreen mode

Espero que os sirva de ayuda. Un saludo!

Top comments (1)

Collapse
 
drfcozapata profile image
Francisco Zapata •

Muchísimas gracias bro!!!
Me sirvió un mundo.
Bendiciones desde Venezuela.