https://github.com/mathsgod/gql-query-builder-php
https://github.com/mathsgod/gql-query-builder-php
Last synced: 12 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/mathsgod/gql-query-builder-php
- Owner: mathsgod
- License: mit
- Created: 2023-03-31T10:27:45.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-06-19T03:15:18.000Z (almost 3 years ago)
- Last Synced: 2025-04-18T07:18:40.571Z (about 1 year ago)
- Language: PHP
- Size: 41 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GraphQL Query Builder for PHP
[](https://github.com/mathsgod/gql-query-builder-php/actions/workflows/php.yml)
A simple helper function to build GraphQL queries, mutations and subscriptions use PHP.
This project is based on [GraphQL Query Builder](https://www.npmjs.com/package/gql-query-builder) for Node.js.
## Install
`composer require mathsgod/gql-query-builder-php`
## Usage
```php
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
1. Query
2. Query (with variables)
3. Query (with nested fields selection)
4. Query (with custom argument name)
5. Query (with required variables)
6. Query (with empty fields)
7. Mutation
8. Mutation (with required variables)
9. Subscription
#### Query:
```php
$query=query([
"operation"=>"thoughts",
"fields"=>['id', 'name', 'thought']
]);
print_r($query);
// output:
/*
Array
(
[query] => query { thoughts { id name thought } }
[variables] => Array
(
)
)
*/
```
#### Query (with variables):
```php
$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):
```php
$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):
```php
$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)
```php
$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):
```php
$query = query([
[
"operation" => "getFilteredUsersCount",
],
[
"operation" => "getAllUsersCount",
"fields" => []
],
[
"operation" => "getFilteredUsers",
"fields" => [
"count" => []
]
]
]);
print_r($query);
/*
Array
(
[query] => query { getFilteredUsersCount getAllUsersCount getFilteredUsers { count } }
[variables] => Array
(
)
)
*/
```
#### Mutation:
```php
$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):
```php
$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:
```php
$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.
)
)
*/
```