DEV Community

Diego
Diego

Posted on

1

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!

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (1)

Collapse
 
drfcozapata profile image
Francisco Zapata

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

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more