mathsgod / gql-query-builder-php
A PHP library to build GraphQL queries
Installs: 1 648
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Open Issues: 0
Requires
- php: ^8.0
Requires (Dev)
- phpunit/phpunit: ^9.6
README
A simple helper function to build GraphQL queries, mutations and subscriptions use PHP.
This project is based on GraphQL Query Builder for Node.js.
Install
composer require mathsgod/gql-query-builder-php
Usage
use function GQLQueryBuilder\query; use function GQLQueryBuilder\mutation; use function GQLQueryBuilder\subscription; $query=query($options); $mutation=mutation($options); $subscription=subscription($options);
Options
options is ["operation","field","variables"] or an array of options
Examples
- Query
- Query (with variables)
- Query (with nested fields selection)
- Query (with custom argument name)
- Query (with required variables)
- Query (with empty fields)
- Mutation
- Mutation (with required variables)
- Subscription
Query:
$query=query([ "operation"=>"thoughts", "fields"=>['id', 'name', 'thought'] ]); print_r($query); // output: /* Array ( [query] => query { thoughts { id name thought } } [variables] => Array ( ) ) */
Query (with variables):
$query=query([ "operation"=>"thoughts", "fields"=>['id', 'name', 'thought'], "variables"=>[ "id"=>1, ] ]); print_r($query); // output: /* Array ( [query] => query ($id: Int) { thoughts(id: $id) { id name thought } } [variables] => Array ( [id] => 1 ) ) */
Query (with nested fields selection):
$query = query([ "operation" => "orders", "fields" => [ "id", "amount", "user" => [ "id", "name", "email", "address" => [ "city", "country", ] ] ] ]); // output: /* Array ( [query] => query { orders { id, amount, user { id, name, email, address { city, country } } } } [variables] => Array ( ) ) */
Query (with custom argument name):
$query = query([ "operation" => "someoperation", "fields" => [ [ "operation" => "nestedoperation", "fields" => ['field1'], "variables" => [ "id2" => [ "name" => "id", "type" => "ID", "value" => 123 ] ], ] ], "variables" => [ "id" => [ "name" => "id", "type" => "ID", "value" => 456 ] ] ]); /* Array ( [query] => query($id: ID, $id2: ID) { someoperation(id: $id) { nestedoperation (id: $id2) { field1 } } } [variables] => Array ( [id] => 456 [id2] => 123 ) ) */
Query (with required variables)
$query=query([ "operation"=>"userLogin", "variables"=>[ "email"=>[ "value"=>"jon.doe@example.com", "required"=>true ], "password"=>[ "value"=>"123456", "required"=>true ] ], "fields"=>["userId","token"] ]); /* Array ( [query] => query($email: String!, $password: String!) { userLogin(email: $email, password: $password) { userId, token } } [variables] => Array ( [email] => jon.doe@example.com [password] => 123456 ) ) */
Query (with empty fields):
$query = query([ [ "operation" => "getFilteredUsersCount", ], [ "operation" => "getAllUsersCount", "fields" => [] ], [ "operation" => "getFilteredUsers", "fields" => [ "count" => [] ] ] ]); print_r($query); /* Array ( [query] => query { getFilteredUsersCount getAllUsersCount getFilteredUsers { count } } [variables] => Array ( ) ) */
Mutation:
$mutation=mutation([ "operation"=>"createThought", "variables"=>[ "name"=>"John Doe", "thought"=>"Hello World" ], "fields"=>["id","name","thought"] ]); print_r($mutation); /* Array ( [query] => mutation($name: String, $thought: String) { createThought(name: $name, thought: $thought) { id name thought } } [variables] => Array ( [name] => John Doe [thought] => Hello World ) ) */
Mutation (with required variables):
$query = mutation([ "operation" => "userSignup", "variables" => [ "name" => [ "value" => "Jon Doe", ], "email" => [ "value" => "jon.doe@example.com", "required" => true ], "password" => [ "value" => "123456", "required" => true ], ], "fields" => ["userId"] ]); print_r($query); /* Array ( [query] => mutation($name: String, $email: String!, $password: String!) { userSignup(name: $name, email: $email, password: $password) { userId } } [variables] => Array ( [name] => Jon Doe [email] => jon.doe@example.com [password] => 123456 ) ) */
Subscription:
$query = subscription([ "operation" => "thoughtCreate", "variables" => [ "name" => "Tyrion Lannister", "thought" => "I drink and I know things." ], "fields" => ["id"] ]); print_r($query); /* Array ( [query] => subscription($name: String, $thought: String) { thoughtCreate(name: $name, thought: $thought) { id } } [variables] => Array ( [name] => Tyrion Lannister [thought] => I drink and I know things. ) ) */