01 de maio de 2020 • 1 min de leitura
Queries no Laravel com o padrão da liguagem GraphQL
Neste post estou trazendo uma solução bem interessante para aqueles que querem usar queries GraphQL em projetos PHP Laravel. Trata-se do pacote RestQL.
O RestQL é um pacote de resolução de dados baseado no eloquent do Laravel. Esse pacote adota princípios do GraphQL, resolvendo os dados solicitados pelo cliente. O RestQL usa os models do Laravel como ponto de entrada para adicionar queries, com base nos métodos do eloquent.
Exemplo de query usando o RestQL:
{
"authors": {
"select": ["name","email"],
"with": {
"articles": "title"
}
}
}
O resultado dessa query seria:
{
"authors": [
{
"id": 1,
"name": "John Doe",
"email": "johndoe@email.com",
"articles": [
{
"id": 1,
"title": "Article 01",
"author_id": 1
},
{ /* more ...*/ }
]
},
{ /* more ...*/ }
]
}
Basicamente, o RestQL interpretará essa query da seguinte maneira:
$query->select(['name'])->with([
'articles' => static function (Relation $relation) {
$relation->select(['title']);
}
]);
Bem, aqui neste post eu fiz uma introdução no assunto para que se tenha uma ideia do funcionamento. Para mais detalhes, acesse o link do Github do pacote RestQL.
O criador do RestQL também indica um link com mais cláusulas para criação das queries: Cláusulas para criação de queries com o RestQL.