Lighthouse GraphQL Server for Laravel
Published on by Paul Redmond
Lighthouse is a PHP package that allows you to serve a GraphQL endpoint from your Laravel application. It aims to reduce boilerplate code around creating a schema and integrates well with your existing Laravel application.
According to the Lighthouse documentation, it supports a schema-first approach:
Lighthouse enables schema-first development by allowing you to use the native Schema Definition Language to describe your data. Leverage server-side directives to add functionality and bring your schema to life.
With nothing more than this schema file (along w/ Eloquent models and migrations set up), you have a fully functional GraphQL server with no additional code!
In addition to a bunch of built-in GraphQL directives, Lighthouse allows you to customize things to support any data requirements.
The way that you define your GraphQL with this package is to point the lighthouse.php
configuration file to your main schema file:
'schema' => [ 'register' => base_path('routes/graphql/schema.graphql'),],
Here’s an example type which associates a Posts and Comments relationship in Eloquent:
type Post { author: User comments: [Comment!]}
Here’s an example of using the @hasMany directive which works in tandem with Laravel’s hasMany relationship:
type User { posts: [Post!]! @hasMany}
Check out the complete list of Directives that ship with Lighthouse if you’re already familiar with GraphQL and you want to dive into schema development. It will help you to be familiar with GraphQL before starting to work with Lighthouse, but it seems to be like an excellent package for integrating GraphQL in Laravel!
If you are not familiar with GraphQL, check out the official GraphQL website for a complete overview. Wes Bos recently released Fullstack Advanced React and GraphQL which teaches you advanced React patterns, but also covers using GraphQL on the server and client-side.
To learn more about Lighthouse and start integrating it as a GraphQL server for your Laravel apps, check out the Lighthouse documentation and the Lighthouse GraphQL Server code on GitHub.