Laravel cuenta con los Seeder y Factories como funcionalidades para llenar información en las tablas de la base de datos, ¿Pero cuando y con qué propósito se utilizan?. Esto depende del contexto donde nos encontremos y preguntarnos si realmente es necesario ejecutar los seeder en la aplicación que estemos desarrollado.
Fase de desarrollo
Durante la fase de desarrollo, no hay mucho análisis o discusión, los Seeders se utilizan para poblar la base de datos con datos de prueba, esto nos da una ventaja para poder probar la aplicación y su rendimiento mediante un conjuntos de datos, que pueden ser cientos hasta miles que podemos generar mediante esta funcionalidad, !Te imaginas llevar esto uno a uno! sería un ejercicio en sufrimiento.
Cuando iniciamos un proyecto, el objetivo de crear los Seeders es llenar tus tablas con información predefinida, lo cual es útil para simular situaciones de la vida real y probar el funcionamiento de tu aplicación con datos representativos. Además, puede ayudarte a realizar pruebas de rendimiento y a asegurarte de que tu aplicación funciona correctamente con diversos conjuntos de datos. Algunas de las razones más importantes son:
- A veces, no disponemos de datos reales o desconocemos los tipos de datos que ingresarán en una estructura determinada. Experimentar con diversas opciones de datos, tipos y longitudes nos brindará la oportunidad de evaluar de manera más exhaustiva el rendimiento de cada campo.
- Los datos no son siempre permanentes; a menudo, es necesario ejecutar las migraciones un par de veces una y otra vez.
- Es una forma de testear la aplicación, siendo el escenario donde los errores se hacen más evidentes y destacan con mayor claridad.
- Surge la pregunta acerca de la cantidad de información con la que nuestra aplicación va a operar. No es lo mismo manejar cientos de datos que enfrentarse a cien mil o un millón de ellos.
Fase de producción
Cuando ya estamos en la etapa de producción, surge la pregunta ¿Es necesario ejecutar los seeder?. No, generalmente no se recomienda ejecutar seeders en un entorno de producción. De hecho, los datos que se generan aleatoriamente, eso definitivamente se descarta.
Ejecutar seeders en un entorno de producción podría tener consecuencias no deseadas, ya que se agregarían datos ficticios o de prueba a la base de datos en producción, lo que podría afectar negativamente la integridad y la consistencia de los datos reales. Pero puede existir casos donde sea estrictamente necesario ejecutar los seeders. Por ejemplo:
Al lanzar la aplicación por primera vez o en un entorno de producción nuevo, se requiere iniciar sesión con un usuario para poder ingresar al sistema. En consecuencia, se necesita un usuario previamente creado, por lo que resulta necesario incluirlo en un Seeder con datos establecidos por el desarrollador (no datos aleatorios).
En ciertas aplicaciones, existen datos que se consideran estáticos y no experimentan cambios con el tiempo. Estos datos pueden ser incluidos en los Seeders para las migraciones. Por ejemplo, en un sistema dental, la cantidad de piezas dentales permanece constante para todos los pacientes. Otro caso sería en sistemas que emplean códigos postales o códigos de país para WhatsApp.
En un entorno de producción, se espera que los datos sean gestionados y manipulados de manera cuidadosa y precisa por parte del usuario. Sin embargo, también es válido considerar la inclusión de Seeders en las migraciones para garantizar el éxito de la aplicación. en ocasiones también se puede plantear ejecutar solo los seeder adecuadas para la situación adecuada.
Saludos y éxitos.

Victor Peña
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.