rdx / graphql-query
构建 GraphQL 查询
1.1
2018-12-01 15:47 UTC
This package is not auto-updated.
Last update: 2024-09-14 19:47:35 UTC
README
构建查询
$query = Query::query('TestQueryWithEverything');
$query->defineFragment('userStuff', 'User');
$query->userStuff->fields('id', 'name', 'path');
$query->fields('scope', 'friends', 'viewer');
$query->friends->attribute('names', ['marc', 'jeff']);
$query->friends->fields('id', 'name', 'picture');
$query->friends->picture->attribute('size', 50);
$query->viewer->fields('...userStuff', 'repos');
$query->viewer->repos
->attribute('public', true)
->attribute('limit', 10)
->attribute('order', ['field' => Query::enum('STARS'), 'direction' => Query::enum('DESC')]);
$query->viewer->repos->fields('id', 'path');
$query->viewer->repos->fragment('PublicRepo')->fields('stars');
$query->viewer->repos->fragment('PrivateRepo')->fields('status', 'permissions', 'members');
$query->viewer->repos->PrivateRepo->members->fields('...userStuff');
渲染结果
$string = $query->build();
结果为
query TestQueryWithEverything {
scope
friends(names: ["marc","jeff"]) {
id
name
picture(size: 50)
}
viewer {
...userStuff
repos(public: true, limit: 10, order: {field: STARS, direction: DESC}) {
... on PublicRepo {
stars
}
... on PrivateRepo {
status
permissions
members {
...userStuff
}
}
id
path
}
}
}
fragment userStuff on User {
id
name
path
}
突变
由于突变实际上与查询相同,因此具有完全相同的语义
$query = Query::mutation();
$query->field('moveProjectCard')->attribute('input', ['cardId' => 123, 'columnId' => 456]);
$query->moveProjectCard->fields('clientMutationId');
制作
mutation {
moveProjectCard (input: {cardId: 123, columnId: 456}) {
clientMutationId
}
}