0:007:32

Recursos

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?

Datos falsos con Foundry en Symfony

Curso Práctico de Symfony

Clase 8 de 22

Clase 8 / 22