Matias Acosta
Matias Acosta
Laravel
Comparte:

API - Relacion 1 a N

Estuve diguiendo las lecciones de Construyendo una API utilizando la especificación JSON:API. Pero consulto: como se implementaria la relación 1 a N. El código específico para la relación 1 a 1 es:
public function getRelationshipLinks(): array
 |     {
 |        return ['category', 'author'];
 |     }
 | 

 |     public function getIncludes(): array
 |     {
 |         return [
 |             CategoryResource::make($this->whenLoaded('category')),
 |             AuthorResource::make($this->whenLoaded('author')),
 |         ];
 |     }

Y para devolver los valores al momento de armar el Documento JSON:API es:
return Document::type($this->resource->getResourceType())
                        ->id($this->resource->getRouteKey())
                        ->attributes($this->filterAttributes($this->toJsonApi()))
                        ->relationshipLinks($this->getRelationshipLinks())
                        ->links(
                            [
                                'self' => route('api.v1.' . $this->resource->getResourceType() . '.show', $this->resource)
                            ]
                        )
                        ->get('data');

El problema es que de una instancia de tipo collection, no podria consultar por getResourceType(), incluso si genero realizo una iteración sobre la colección, intenta buscar los métodos en el modelo... y termina no funcionando..
En la versón anterior de este curso se explica esto utilizando una libreria, pero en la nueva versión del curso no especifica como lograr esta relación.
Mateo Martínez
Mateo Martínez (44 xp)
Yo también tengo el mismo problema, espero publique la solución.
Saludos.