Saltar al contenido

Los desarrolladores de Laravel estamos familiarizados con los API Resources cuando necesitamos transformar nuestros modelos en respuestas JSON. Sin embargo, hay situaciones donde podemos necesitar transformar nuestros modelos en arrays estructurados sin necesariamente estar trabajando con una API REST. Es aquí donde los transformadores pueden brillar como una solución elegante y flexible.

¿Por qué usar transformadores?

Los transformadores nos permiten:

  • Mantener una estructura consistente en la presentación de nuestros datos

  • Reutilizar la lógica de transformación en diferentes contextos

  • Manejar fácilmente relaciones y datos anidados

  • Trabajar con colecciones y paginación de manera transparente

Implementando un sistema de transformadores

La base de nuestro sistema será una clase abstracta DataTransformer que proporciona la funcionalidad común para todos nuestros transformadores:

Esta clase abstracta nos proporciona varios métodos útiles:

  1. transform(): El punto de entrada principal que detecta automáticamente si estamos trabajando con un modelo individual, una colección o un paginador.

  2. transformCollection(): Maneja la transformación de colecciones de modelos.

  3. transformPaginator(): Gestiona la transformación de resultados paginados.

  4. with(): Permite incluir relaciones adicionales en la transformación.

  5. whenLoaded(): Ayuda a manejar relaciones cargadas de manera eficiente.

Creando transformadores concretos

Una vez que tenemos nuestra clase base, podemos crear transformadores específicos para cada modelo. Veamos un ejemplo con un transformador para el modelo Group:

Ejemplos de uso

Transformando un modelo individual

Transformando una colección

Trabajando con paginación

Incluyendo relaciones

Ventajas sobre API Resources

Los transformadores ofrecen varias ventajas en ciertos contextos:

  1. Mayor flexibilidad en la estructura de salida

  2. Capacidad de reutilización en diferentes contextos (no solo API)

  3. Facilidad para manejar lógica de transformación compleja

  4. Control granular sobre las relaciones incluidas

Conclusión

Los transformadores proporcionan una manera elegante y flexible de convertir nuestros modelos en estructuras de datos consistentes. Aunque los API Resources son excelentes para APIs REST, los transformadores brillan en situaciones donde necesitamos más flexibilidad o estamos trabajando fuera del contexto de una API.

Esta implementación nos permite mantener nuestro código limpio y DRY, al tiempo que nos da la flexibilidad necesaria para manejar diferentes casos de uso en nuestra aplicación Laravel.

¿Quieres seguir profundizando en las últimas novedades de Laravel?

No te pierdas nuestra ruta de Laravel 11, donde exploramos las funciones más recientes del framework, prácticas avanzadas y consejos para optimizar tus proyectos. ¡Te esperamos allí para que lleves tus aplicaciones al siguiente nivel!

school Curso completo

Curso Laravel 12
Completo 2026

El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.

access_time 8 horas de contenido
layers 4 tecnologías en 1
update 100% actualizado
code Proyectos prácticos
Ver Curso Laravel 12 arrow_forward

star Incluido en cualquier suscripción

Rutas de aprendizaje