Contenido del curso
Configuración base
- 3

Configuración inicial de un foro en Laravel
04:59 min - 4

Personalizar componentes Blade con Tailwind CSS
10:26 min - 5

Primer componente Livewire en Laravel
11:10 min - 6

Categorías dinámicas con Laravel y Blade
Viendo ahora - 7

Migración y factory para preguntas en Laravel
05:37 min - 8

Cómo listar preguntas con Tailwind y Laravel
07:57 min - 9

Respuestas anidadas y migrate fresh en Laravel
06:26 min
Preguntas
Pregunta
Respuesta
Flujo de trabajo tradicional
Conclusiones
Categorías dinámicas con Laravel y Blade
Resumen
Trabajar con categorías dinámicas en Laravel te permite reemplazar texto estático por datos consultados desde la base de datos. Esto es clave si estás construyendo un panel administrativo, un blog o cualquier sistema donde los filtros y etiquetas cambian con frecuencia.
La idea es sencilla: creas la entidad, defines la estructura de la tabla, generas datos falsos con un factory y luego consumes esa información desde un componente que se actualiza solo.
Cómo creo la entidad Category con su migración y factory
Todo arranca en la terminal. El comando que dispara la creación de los tres archivos a la vez es directo y te ahorra pasos manuales.
Usa php artisan make:model Category -mf para generar el modelo, la migración y el factory en un solo movimiento. El flag -m crea la migración y -f crea el factory [01:00].
¿Para qué sirve un factory en Laravel? Es el molde que define cómo se generan datos falsos para pruebas o desarrollo. Le dices qué campos llenar y con qué tipo de información, y Laravel se encarga del resto.
Después de ejecutar el comando, verás los tres archivos listos: el modelo en app/Models, la migración en database/migrations y el factory en database/factories.
Qué campos necesita la tabla categories
La migración representa la estructura física de la tabla. Para este caso, la configuración es mínima y solo necesitas tres columnas.
id: el identificador único que Laravel genera por defecto.name: el nombre visible de la categoría.color: un valor hexadecimal que define el color de la etiqueta.
En el archivo de migración agregas las líneas correspondientes con $table->string('name') y $table->string('color'). Eso basta para tener la estructura lista [02:10].
Cómo configuro el factory para generar datos aleatorios
El factory usa la librería Faker para inventar valores realistas. Aquí defines dos campos: un nombre con fake()->word() y un color con el método que genera valores hexadecimales.
El resultado son categorías como "design", "marketing" o "sales", cada una con un color distinto tipo #a3f5c1. Cada vez que ejecutas el seeder, los valores cambian.
Cómo siembro datos con seeders en Laravel
El seeder es el archivo que ejecuta la creación masiva de registros. En DatabaseSeeder puedes mezclar usuarios reales con datos generados por el factory.
La estrategia que se usa aquí divide la creación en dos partes: nueve usuarios totalmente aleatorios y uno con datos específicos, en este caso un correo i@app.com. Después se añade la línea para crear 10 categorías [03:30].
php User::factory(9)->create(); User::factory()->create(['email' => 'i@app.com']); Category::factory(10)->create();
Para materializar todo en la base de datos ejecutas php artisan migrate:fresh --seed. Este comando refresca las tablas y siembra los datos en una sola operación.
¿Qué hace migrate:fresh --seed? Borra todas las tablas, vuelve a correr todas las migraciones y ejecuta los seeders. Es la forma más rápida de tener un entorno limpio con datos de prueba.
Cómo paso las categorías del controlador a la vista
Con los datos en la base, el siguiente paso es consultarlos desde el componente de PHP. Importas el modelo Category al inicio del archivo y dentro del método correspondiente lanzas la consulta [04:40].
La consulta básica es Category::get() y el resultado lo pasas a la vista en un array asociativo bajo la clave categorias. Funciona como un controlador tradicional, pero al estar dentro de un componente reactivo, los cambios se reflejan en tiempo real.
Cómo imprimo categorías dinámicas en Blade
En la vista reemplazas el HTML estático por un bucle que recorre la colección. La directiva @foreach itera sobre $categorias y por cada vuelta imprime el nombre y aplica el color correspondiente.
blade @foreach($categorias as $category) <span style="background-color: {{ $category->color }}"> {{ $category->name }} </span> @endforeach
El atributo style recibe el valor hexadecimal directamente desde el campo color, lo que permite que cada etiqueta tenga su propia apariencia sin tocar CSS adicional.
Por qué la primera letra aparece en mayúscula
Un detalle visual importante es la capitalización. Como Faker genera palabras en minúscula, se aplica una clase utilitaria de CSS, normalmente capitalize de Tailwind, para mostrar la primera letra en mayúscula sin modificar los datos originales [05:50].
Eso te da control sobre la presentación sin alterar lo que está guardado en la base. Si mañana decides cambiar el formato, solo ajustas la clase en el HTML.
¿Has probado combinar factories con seeders en tus proyectos? Cuéntame qué tipo de datos sueles generar y cómo los conectas con tus vistas dinámicas.