Laravel 5 IDE Helper
Laravel 5 IDE Helper
¡INSCRÍBETE A CUALQUIER CURSO CON UN 50% DE DESCUENTO PARA NUEVOS CLIENTES!



Hace poco vimos una introducción a Laravel Api Resource, así que ya sabemos para qué nos puede servir esta poderosa herramienta de Laravel 5.5.

En este tutorial vamos a ver cómo podemos trabajar con las siguientes Relaciones en Laravel Api Resource.

  • Relaciones de 1 a 1 (user -> dni).
  • Relaciones de 1 a muchos (user –>invoices).
  • Relaciones de muchos a muchos (posts <--> categories).

Relaciones en Laravel Api Resource de 1 a 1

Nosotros vamos a tener una relación entre un usuario y su documento de identidad (dni en España), lo primero que debemos tener es un modelo correctamente configurado.

Una vez tenemos el modelo con la relación al dni podemos modificar el resource de usuarios para decirle que también queremos el dni.

Si quieres ocultar campos del dni simplemente puedes utilizar el atributo $hidden del modelo Dni.

Y el resultado será el siguiente.

Relaciones en Laravel Api Resource de 1 a muchos

Ahora vamos a abrir el modelo User para añadir la relación a invoices, un usuario puede tener muchas facturas pero una factura sólo puede pertenecer a 1 usuario.

Ahora vamos a crear un nuevo resource para Invoices con el nuevo comando make:resource.

Este resource será muy sencillo ya que únicamente queremos añadir el importe total y el número de factura.

Vamos a abrir de nuevo el archivo UserResource para decirle que muestre las facturas pero únicamente cuando éstas hayan sido cargadas.

Para que las facturas se carguen tenemos que utilizar el método with, así que si añadimos el siguiente código en cualquier controlador nuestro recurso de usuarios será capaz de retornar el usuario con su dni y sus facturas.

Y el resultado ahora será el siguiente.

Relaciones en Laravel Api Resource de muchos a muchos

Finalmente nos queda manejar la relación más compleja, aunque gracias a Eloquent es tremendamente sencilla, nosotros vamos a tener 2 modelos, el modelo Post y el modelo Category, un post puede tener muchas categorías y una categoría puede pertenecer a muchos Posts.

Lo primero que vamos a hacer es definir los resources para Category y Post.

Cómo puedes ver ya estamos devolviendo las categorías con la línea CategoryResource::collection($this->categories), es así de sencillo. Ahora vamos a definir las relaciones en sus respectivos modelos.

Para acceder a todos los posts con sus categorías simplemente debemos escribir lo siguiente.


Cómo puedes ver el trabajo con Laravel Api Resource es muy interesante y nos puede ayudar mucho a la hora de formatear datos para nuestras apis.