Los Model Factories nos permiten crear registros de prueba, ya sea para cargar nuestra base de datos con “información falsa” o “información de prueba” o para crear las condiciones necesarias para ejecutar pruebas automatizadas. En esta lección practicaremos con la creación de modelos desde Tinker y desde nuestros seeders utilizando Model Factories. Además te enseñaré cómo generar tus Model Factories personalizados, adaptarlos al modelo correspondiente y también veremos una pequeña introducción al uso del componente Faker.

Repositorio

Ver el código de esta lección en GitHub

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Notas

Generar un Model Factory

Para poder utilizar un Model Factory necesitamos generarlo primero con el comando make:factory. El Model Factory será generado en el directorio database/factories.

Dentro de nuestro Model Factory especificamos el atributo o los atributos que queremos generar de forma aleatoria:

Además es importante que indiquemos el nombre del modelo que queremos enlazar a dicho Model Factory (en este caso \App\Profession::class).

Para no tener que agregar el nombre del modelo de forma manual podemos pasar la opción --model al comando make:factory:

Al generar un modelo con el comando make:model también podemos generar un Model Factory y/o una migración pasando las opciones -f y/o -m por ejemplo:

Utilizando el componente de PHP Faker indicamos que el valor de title será una oración aleatoria:

Pasando un número como primer argumento a sentence podemos indicar el número de palabras que queremos que contenga la oración: $faker->sentence(3). Esto devolverá oraciones con 2, 3 o 4 palabras, o si queremos estrictamente que sean 3 palabras podemos llamar al método de esta forma: $faker->sentence(3, false)

Componente Faker

El componente Faker es una librería de PHP que genera datos de prueba por nosotros. Por ejemplo, podemos generar un nombre:

O un texto aleatorio:

Incluso números de teléfono:

Utilizar un Model Factory

Para utilizar un Model Factory debemos llamar al helper factory, especificando el nombre del modelo como argumento y finalmente encadenando el llamado al método create.

Esto va a crear un usuario en la base de datos y va a retornar el modelo en cuestión, en este caso un objeto de la clase User:

Cada vez que ejecutamos el método create() creamos un nuevo registro aleatorio. Si pasamos un array asociativo al método create() podemos sobrescribir o asignar propiedades extras:

Para cargar un determinado número de registros pasamos como segundo argumento la cantidad que queremos crear:

También podemos lograrlo utilizando el método times():

Material relacionado

Únete a la discusión

Regístrate en Styde y obtén una invitación a nuestro Slack.

Lección anterior Manejo de relaciones con el ORM Eloquent