Semillas en Laravel

¿Cómo funcionan las semillas en Laravel?

Video imagen_miniatura

En esta publicación te enseñaremos qué son y cómo usar las semilla o seeders, aplicándolas en la base de datos

Si tener que cargar con el script de instalación de base de datos que usa tu proyecto se evitaba con el uso de migraciones; tener el mismo script u otros scripts con inserts a las tablas para llenar nuestra base de datos con data de prueba, se evitará con el uso de las semillas, en esta publicación te enseñaremos qué son y cómo usarlas; aplicándolas en la base de datos que creamos en nuestra publicación sobre migraciones.

¿Por qué usar semillas en Laravel?

Escribir inserts para tus tablas de base de datos es algo necesario para poder probar los comportamientos iniciales en tu proyecto, cómo hacer que determinadas acciones ocurran según el dato que esté guardado en una tabla; por ejemplo imagina tener un proyecto en el que tengas que probar que al loguearse un usuario se tenga que ver qué rol tiene para poder cargarle los menús que solo él podrá ver, para esto la base de datos ya debe tener datos almacenados en tu tabla de roles, como: administrador, empleado, invitado, etc; dado que estas probando una funcionalidad de usuarios sería apresurado ponerse a hacer un crud a roles solo por un par de datos.

Por ello Laravel nos ofrece la herramienta “Seeding” (“seed” significa semilla por lo que “seeding” se traduciría como siembra) o también conocido como “Seeders” (sembradores en español, hace referencia a que nosotros solo escribiremos como será el dato que queremos, la semilla, y este lo repetirá con muchas variaciones lo que se entendería como que somos sembradores y alimentaremos las tablas con data) que se encarga de crear data de prueba para cada una de las tablas que la requieran.

¿Cómo funcionan las semillas en Laravel?

Las semillas al igual que las migraciones se guardan en la carpeta “database”, la idea es crear una semilla (con esto me refiero a crear un fichero que tiene una clase hija de la clase Seeder) por cada tabla de base de datos a la que queramos agregarle datos de prueba, en ellas escribiremos qué registros queremos usando o los modelos de la tablas si los tuviese o la Fachada DB, para luego agregar tales semillas en el fichero “DatabaseSeeder” con eso solo bastaría correr el comando “php artisan db:seed” y así ya estarías creando data de prueba, pero veamos esto más despacio.

¿Cómo se crea una semilla?

Para crear las semillas usamos el comando: “php artisan make:seeder” seguido del nombre que tendrá el archivo, de recomendación usa de estándar: el nombre de tu tabla más la palabra Seeder, una vez creadas, si revisamos el archivo nos daremos cuenta de la estructura de un semilla, consta únicamente de una clase con el nombre que le diste al crear el archivo y de una única función: “run”, dentro de ella colocaremos los datos que necesitamos.

imagen_comando_crear_semilla

Para el ejemplo ejecutaremos este comando tres veces para crear tres semillas: la primera, la de la tabla “hoteles” que tiene 4 campos, ignorando el id porque es autoincremental. Hay más de una forma de crear las semillas, por ejemplo podríamos intentar lo que está comentado en la imagen de más abajo; usar instancias de la clase hotel, que viene a ser un modelo y eloquent pasaría a convertir este hotel en un registro, pero requerimos del modelo y aún no tenemos modelos, por lo que la forma que usaremos no usa modelos, usa la Fachada “DB” que hará una inserción en la tabla que le indiques con los datos que listes en un array, a diferencia de esto no necesitamos hacer un referencia a algún modelo, como Hoteles o Idiomas, si no que únicamente a la Fachada.

imagen_semilla_migracion

¿Para qué sirve la semilla “DatabaseSeeder”?

Seguro se habrán dado cuenta que todo proyecto Laravel tiene ya creada una semilla llamada “DatabaseSeeder” sobre esta semilla haremos el llamado al resto de semillas, al hacer hacerlo ten en cuenta que al igual que con las migraciones, debes tener en cuenta que el orden en el que se ejecutan importa, por lo que sí alguno de tus datos ingresados en tus semillas está usando fks de algún dato que aún no existe, tendrás un error.

¿Cómo ejecutamos nuestras semillas?

Para correr nuestras semillas solo hacemos uso del comando “php artisan db:seed”. De esa forma estarás ejecutando todos las funciones “run” de tus semillas.

imagen_databaseSeeder

Si revisas tu base de datos encontrarás los registros que escribiste en cada una de tus semillas. En el ejemplo en la tabla hoteles se guardó un registro con el id 1, la tabla de idiomas también tiene su primer registro, también con id 1 y al final el check-in tiene los ids de sus relaciones con idiomas y hoteles ambas 1 de los dos registros que se crearon antes que él.

Tip:
Recuerda que puedes borrar tus migraciones y volverlas a crear junto con las nuevas semillas que hayas agregado usando “php artisan migrate:fresh --seed”

¡Recuerda echarle un vistazo a la documentación sobre semillas para aprender algo nuevo!

Para descargar el recurso de forma gratuita { crea una cuenta } gratis .

Descarga código fuente

ENTRAR PARA DESCARGAR 0

Redactado por: vidalrodrigo, Leido 125 veces

CURSOS DE PROGRAMACIÓN CON PROYECTOS

© Todos los derechos reservados Codea App FullStack | Cursos de programación avanzados | 2020 - 2021