Aluizio Developer

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.

Aluizio Developer

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.

Links úteis:

Laravel

GraphQL

Comentários