Adicionando dados relacionados na API resource do Laravel

Relacionamentos com API resource

Relacionamentos com API resource

A API resource do Laravel facilitou bastante a comunicação RESTfull com outras plataformas. Como explicado no último artigo (API resources do Laravel, criando repostas RESTfull), onde iniciei sobre este tema, este recurso cria uma camada de transformação dos dados para trabalhar com JSON. Agora vou dar foco no relacionamento de dados, que não foi contemplado no último artigo.

Relacionamentos com API resource

Sempre que quisermos adicionar recursos relacionados de uma tabela, podemos retornar estes dados fazendo uma requisição no outro resource relacionado. Vamos ao nosso exemplo. Tenho a tabela product_line que possui diversos produtos. Para eu retornar todos os dados deste product_line e todos os produtos que pertencem a ele, basta eu adicionar a Collection de products em um atributo ‘products’ dentro do array.

Aqui… se o seu relacionamento está certinho na model a consulta já vai buscar os produtos relacionados a está linha de produtos. E retornar uma collection dentro do atributo ‘products’

Exibição Condicional

Além de trazer os relacionamentos também é possível ter o controle da resposta trazendo o dado relacionado apenas se ele já tiver sido carregado na model. Através da função whenLoaded podemos carregar apenas o relacionamento que queremos através do nome deste relacionamento. Assim, evita-se que sejam carregados relacionamentos desnecessários para o resource.

Agora vamos ao exemplo. Abaixo vamos trocar o relacionamento do $this->products para a função $this->whenLoaded(‘products’) para controlar o carregamento deste relacionamento

No exemplo abaixo, se não for possível carregar o relacionamento do products o item será removido do resource.

Conclusão

Não existem segredos para a utilização dos relacionamentos dentro do API resource, na verdade todo o trabalho está por trás no Eloquent e na Model. Estando tudo certo por trás relacionar no API resource fica extremamente simples e natural. Para quem quiser se aprofundar mais nesta funcionalidade aconselho darem uma lida na documentação oficial.

Felipe Moraes
Felipe Moraes

Desde pequeno eu adorei tecnologia e este sentimento me fez estudar e trabalhar com desenvolvimento, design de interfaces e interação. Esta vontade de melhorar e aprender com a tecnologia me fez estar aqui na DialHost desde 2012.

Comentários

Comentários ofensivos serão moderados.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *