Curso Práctico de Symfony

Datos falsos con Foundry en Symfony

Curso Práctico de Symfony

Contenido del curso

Administración

Datos falsos con Foundry en Symfony

Resumen

Generar datos falsos en Symfony te permite probar tu panel administrativo con información realista sin depender de registros reales. Aprenderás a instalar Foundry, crear factories y poblar la base de datos con categorías, publicaciones y comentarios listos para validar tu CRUD.

¿Qué paquetes necesito para crear datos semilla en Symfony?

La receta combina dos componentes que trabajan juntos: uno genera el contenido aleatorio y otro orquesta la creación masiva de entidades.

  • Faker mediante el paquete orm-fixtures, que se instala con composer require orm-fixtures y prepara la carpeta donde vivirán tus fixtures [0:30].
  • Foundry, que se instala como dependencia de desarrollo con composer require ... --dev y habilita la estructura factory [1:05].

¿Qué es un factory en Symfony? Es una clase que define cómo se construye una entidad de prueba. Tú declaras los campos y Foundry genera tantas instancias como pidas, con valores aleatorios coherentes.

Una vez instalados, git status te mostrará los archivos nuevos que vas a manipular durante la configuración [1:25].

¿Cómo creo los archivos factory para mis entidades?

Con el comando php bin/console ya disponible gracias a Foundry, eliges la opción tres del menú interactivo y el sistema genera los factories para todas las entidades existentes [1:40].

En este caso se crean tres archivos correspondientes a las entidades del proyecto:

  1. CategoryFactory para las categorías.
  2. PostFactory para las publicaciones.
  3. CommentFactory para los comentarios.

Cada factory queda listo en su carpeta y solo falta ajustar qué tipo de contenido aleatorio quieres en cada campo.

¿Qué tipo de datos asigno a cada campo?

La clave está en elegir el método de Faker que mejor represente al campo real. No es lo mismo un título que un cuerpo de artículo.

  • Para el título de una publicación, usa una oración corta [3:55].
  • Para el slug, también una oración que luego se transforma.
  • Para el contenido, un texto largo que simule el cuerpo del post.
  • Para el nombre de categoría, una sola palabra en lugar de una frase completa [4:20].

Esta diferenciación hace que tu panel administrativo se vea natural cuando lo abras a revisar.

¿Cómo cargo los datos falsos en la base de datos?

La carga ocurre desde el archivo de fixtures, donde llamas a cada factory con el método createMany y defines cuántos registros quieres por entidad [2:50].

La configuración del ejemplo queda así:

  • CategoryFactory::createMany(8) para crear ocho categorías.
  • PostFactory::createMany(40, function() {...}) para crear 40 publicaciones, cada una asociada a una categoría aleatoria con CategoryFactory::random().
  • Dentro de cada publicación, CommentFactory::new()->many(0, 8) genera entre cero y ocho comentarios por post [3:20].

¿Cómo asocio relaciones entre factories? Llamas al factory relacionado dentro del closure del campo. Por ejemplo, CategoryFactory::random() toma una categoría ya creada y la asigna como relación, manteniendo la integridad referencial.

Con todo configurado, ejecutas php bin/console doctrine:fixtures:load, confirmas con yes y la base de datos se llena automáticamente [2:15].

¿Qué resultado obtengo al ejecutar las fixtures?

El comando reporta el éxito y al revisar el panel administrativo encuentras la información distribuida según las reglas que definiste.

  • 8 categorías creadas exactamente.
  • 40 publicaciones, cada una vinculada a una categoría.
  • 164 comentarios generados aleatoriamente dentro del rango cero a ocho por publicación [4:55].

Esa cantidad es suficiente para probar paginación, filtros y vistas de detalle sin tener que escribir registros a mano.

¿Por qué conviene trabajar con datos semilla en tu proyecto?

Los seeds te dan un entorno predecible y reproducible. Cualquier persona que clone el repositorio puede correr un solo comando y trabajar con la misma base de datos poblada que tú.

Además, te obligan a pensar en los rangos reales de tu aplicación: ¿cuántos comentarios tendrá un post promedio?, ¿cuántas categorías son razonables? Esa reflexión mejora el diseño antes de que entren datos reales.

Ajusta las cantidades, define los tipos de campo y deja que Foundry y Faker hagan el trabajo pesado. ¿Qué configuración de factories vas a usar en tu próximo proyecto?