Comparte en Facebook Twitter Google+

laravel-5-model-factories

En versiones anteriores de Laravel usábamos componentes como Faker para crear datos de prueba y así poder crear una gran cantidad de registros de forma automática en nuestro proyecto de una forma muy sencilla, sin embargo se trataba de un componente externo que debíamos agregar o incluir en el proyecto. Desde ahora esta funcionalidad viene integrada en el núcleo de Laravel 5.1.

Model factories

Son una muy buena forma para crear datos de prueba en la aplicación, esta clase recibe una instancia de la clase Faker que permite generar una gran variedad de valores de forma aleatoria.

Puedes ver más sobre Faker en la pagina oficial del proyecto en GitHub.

Por defecto Laravel 5.1 trae consigo un ejemplo del uso de este nuevo componente, si vamos al archivo database/factories/ModelFactory.php veremos algo como esto :

Es aquí donde podemos definir los datos de prueba y retornarlos en forma de un array.

Recibe como primer parámetro el modelo de la base de datos que deseamos usar, en ocasiones puede ocurrir el caso de que se desee crear datos de prueba de varios tipos como por ejemplo una serie de post activos o inactivos. para ello se puede usar.

Por supuesto siempre seguido del tercer parámetro que seria la función que devuelve el array de datos.

Seeders y Model Facories

Si queremos hacer el llamado a esta función para llenar la base de datos con información de prueba, podemos hacerlo desde el archivo database/seeds/DatabaseSeeder.php

Solo debemos hacer el llamado mediante

Enviando como primer parámetro el modelo para el cual hemos definido los datos de prueba anteriormente y como segundo parámetro la cantidad de registros que deseamos crear.

De igual forma si quieres llamar a un tipo especifico que hayas definido, como en el ejemplo de los post activos e inactivos, puedes enviar ese valor como segundo parámetro y la cantidad de registros como un tercero.

Veamos un ejemplo

Primero que todo recuerda configurar correctamente las credenciales de acceso a tu base de datos en el archivo .env de la aplicación.

Creamos un nuevo modelo con

Editamos el archivo app/Post.php

Creamos una nueva migración con

Editamos el archivo de la migración

Para crear un nuevo Model Factory vamos al archivo database/factories/ModelFactory.php

En este caso hemos creado dos tipos (active, inactive), ahora podemos agregar al archivo database/seeds/DatabaseSeeder.php

Finalmente para verificar que todo funcione ejecutamos la migración y el seeder con

Ahora si verificamos la base de datos vemos que se han creado 10 registros para la tabla Posts, 5 activos y 5 inactivos.

model-factory-database

Como puedes ver es una forma muy sencilla de agregar información a tu base de datos, sin el uso de componentes externos.

Si te ha gustado la publicación recuerda compartir en redes sociales y no olvides dejar tus comentarios y sugerencias.

Lecturas recomendadas 

Regístrate hoy en Styde y continua mejorando tus habilidades: ver planes.

Lección anterior Sistema de autenticación en Laravel 5.1 Lección siguiente Manejo de assets con Elixir y Gulp en Laravel 5.1