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:
transform(): El punto de entrada principal que detecta automáticamente si estamos trabajando con un modelo individual, una colección o un paginador.transformCollection(): Maneja la transformación de colecciones de modelos.transformPaginator(): Gestiona la transformación de resultados paginados.with(): Permite incluir relaciones adicionales en la transformación.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:
Mayor flexibilidad en la estructura de salida
Capacidad de reutilización en diferentes contextos (no solo API)
Facilidad para manejar lógica de transformación compleja
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!
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.
star Incluido en cualquier suscripción