
Cómo hacer que los recursos de la API sean más elegantes con los métodos fluidos de Laravel
- Publicado el 12 mayo, 2025
- Palabras: 230
¿Cansado de complicarte la vida para transformar tus modelos Eloquent en recursos de API? Los métodos de recursos fluidos de Laravel ofrecen un enfoque más elegante que hará que tu código sea más limpio e intuitivo.

#Entendiendo el problema
Al crear API con Laravel, transformar los modelos de Eloquent en recursos es una tarea común. Tradicionalmente, esto se ha logrado encapsulando los modelos con clases de recursos:
UserResource::make(User::find(1));
UserResource::collection(User::query()->active()->paginate());
Si bien este enfoque funciona bien, crea una separación entre los modelos y el proceso de transformación. Primero se recupera el modelo y luego se encapsula en un paso aparte. Este proceso de dos pasos puede hacer que el código se sienta menos fluido y natural.
#La solución fluida Resource
Laravel ahora ofrece métodos fluidos directamente en los modelos y colecciones de Eloquent que agilizan este proceso:
User::find(1)->toResource(UserResource::class);
User::query()->active()->paginate()->toResourceCollection(UserResource::class);
Este enfoque crea un flujo más natural desde la recuperación del modelo hasta la transformación, y su código se lee de izquierda a derecha sin cambios de contexto mental.
#Recursos basados en la convención
Llevando las cosas aún más lejos, Laravel puede adivinar automáticamente la clase de recurso basándose en las convenciones de nombres de modelos:
User::find(1)->toResource();
Al llamar a toResource() sin argumentos, Laravel buscará una clase de resource con el nombre de tu modelo. Si tu modelo es User, buscará UserResource. Este enfoque de convención sobre configuración reduce el código repetitivo y mantiene la claridad.
#Ejemplo práctico
Veamos un ejemplo práctico de cómo estos métodos fluidos mejoran el código de su controlador:
class UserController extends Controller
{
public function show($id)
{
// Before:
// return UserResource::make(User::findOrFail($id));
// After:
return User::findOrFail($id)->toResource();
}
public function index(Request $request)
{
$users = User::query()
->when($request->has('active'), fn($query) => $query->active())
->latest()
->paginate();
// Before:
// return UserResource::collection($users);
// After:
return $users->toResourceCollection();
}
}
El enfoque fluido crea un flujo de código más natural que sigue nuestra forma de pensar sobre el problema: "Consígueme este usuario y transfórmalo en un recurso".
Fuente: Harris Raftopoulos
Artículos relacionados
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión