Inicialización de la BD
Laravel también facilita la inserción de datos iniciales o datos semilla en la base de datos. Esta opción es muy útil para tener datos de prueba cuando estamos desarrollando una web o para crear tablas que ya tienen que contener una serie de datos en producción.
Los ficheros de "semillas" se encuentran en la carpeta database/seeds
. Por defecto Laravel incluye el fichero DatabaseSeeder
con el siguiente contenido:
Al lanzar la incialización se llamará por defecto al método run
de la clase DatabaseSeeder
. Desde aquí podemos crear las semillas de varias formas:
Escribir el código para insertar los datos dentro del propio método
run
.Crear otros métodos dentro de la clase
DatabaseSeeder
y llamarlos desde el métodorun
. De esta forma podemos separar mejor las inicializaciones.Crear otros ficheros Seeder y llamarlos desde el método
run
es la clase principal.
Según lo que vayamos a hacer nos puede interesar una opción u otra. Por ejemplo, si el código que vamos a escribir es poco nos puede sobrar con las opciones 1 o 2, sin embargo si vamos a trabajar bastante con las inicializaciones quizás lo mejor es la opción 3.
A continuación se incluye un ejemplo de la opción 1:
Como se puede ver en el ejemplo en general tendremos que eliminar primero los datos de la tabla en cuestión y posteriormente añadir los datos. Para insertar datos en una tabla podemos utilizar el método que se usa en el ejemplo o alguna de las otras opciones que se verán en las siguientes secciones sobre "Constructor de consultas" y "Eloquent ORM".
Crear ficheros semilla
Como hemos visto en el apartado anterior, podemos crear más ficheros o clases semilla para modularizar mejor el código de las inicializaciones. De esta forma podemos crear un fichero de semillas para cada una de las tablas o modelos de datos que tengamos.
En la carpeta database/seeds
podemos añadir más ficheros PHP con clases que extiendan de Seeder
para definir nuestros propios ficheros de "semillas". El nombre de los ficheros suele seguir el mismo patrón <nombre-tabla>TableSeeder
, por ejemplo "UsersTableSeeder
". Artisan incluye un comando que nos facilitará crear los ficheros de semillas y que además incluirán las estructura base de la clase. Por ejemplo, para crear el fichero de inicialización de la tabla de usuarios haríamos:
Para que esta nueva clase se ejecute tenemos que llamarla desde el método run
de la clase principal DatabaseSeeder
de la forma:
El método call
lo que hace es llamar al método run
de la clase indicada. Además en el ejemplo hemos añadido las llamadas a unguard
y a reguard
, que lo que hacen es desactivar y volver a activar (respectivamente) la inserción de datos masiva o por lotes.
Ejecutar la inicialización de datos
Una vez definidos los ficheros de semillas, cuando queramos ejecutarlos para rellenar de datos la base de datos tendremos que usar el siguiente comando de Artisan:
Last updated