Matias Acosta
Matias Acosta
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.