为什么 Graphql 无法通过使用变量获取参数但在使用静态变量时有效
Why Graphql cannot get the args by using variable but worked when using static var
我的突变方案:
mutation edit($id: Int!) {
user_edit(id:$id) {
user_name
}
}
查询变量如下
{
"id": 1
}
我将其与 laravel-graphql 一起使用。这是我对 user_edit
的定义
class UserEdit extends Mutation
{
protected $attributes = [
'name' => 'UserEdit',
'description' => 'A mutation'
];
public function type()
{
return GraphQL::type('UserInfo');
}
public function args()
{
return [
'id' => [
'type' => Type::int(),
],
];
}
public function resolve($root, $args, $context, ResolveInfo $info)
{
var_dump($args);exit;
$data = User::find($args['id']);
return $data;
}
}
我使用我的查询字符串请求 graphql 服务器,然后服务器 return 我的错误
{
"data": null,
"errors": [
{
"message": "Variable \"$edit1\" of required type \"Int!\" was not provided.",
"locations": [
{
"line": 1,
"column": 11
}
]
}
]
}
我尝试了很多东西并阅读了 github [https://github.com/Folkloreatelier/laravel-graphql#creating-a-mutation][1]
上的文档
并阅读了 graphql 网站的文档,并以多种方式更改了我的 args 定义样式,但都失败了,并且 Strange 是我可以得到参数但是使用 static variable 像 follow
mutation edit{
user_edit(id:1) {
user_name
}
}
然后成功了!我试图谷歌但对此一无所知。我想我真的需要一些帮助
比较文档与您的代码,似乎在您的 args
方法中,您需要指定 arg 名称,如下所示:
public function args()
{
return [
'id' => [
'type' => Type::int(),
'name' => 'id'
],
];
}
参考:https://github.com/Folkloreatelier/laravel-graphql#creating-a-query
希望对您有所帮助!
此致
原因是因为版本较低,如果你安装laravel-graphql版本为'~1.0.0',
去修改config/graphql.php
// The name of the input that contain variables when you query the endpoint.
// Some library use "variables", you can change it here. "params" will stay
// the default for now but will be changed to "variables" in the next major
// release.
'variables_input_name' => 'variables', // modify here from 'params' to 'variables'
我的突变方案:
mutation edit($id: Int!) {
user_edit(id:$id) {
user_name
}
}
查询变量如下
{
"id": 1
}
我将其与 laravel-graphql 一起使用。这是我对 user_edit
class UserEdit extends Mutation
{
protected $attributes = [
'name' => 'UserEdit',
'description' => 'A mutation'
];
public function type()
{
return GraphQL::type('UserInfo');
}
public function args()
{
return [
'id' => [
'type' => Type::int(),
],
];
}
public function resolve($root, $args, $context, ResolveInfo $info)
{
var_dump($args);exit;
$data = User::find($args['id']);
return $data;
}
}
我使用我的查询字符串请求 graphql 服务器,然后服务器 return 我的错误
{
"data": null,
"errors": [
{
"message": "Variable \"$edit1\" of required type \"Int!\" was not provided.",
"locations": [
{
"line": 1,
"column": 11
}
]
}
]
}
我尝试了很多东西并阅读了 github [https://github.com/Folkloreatelier/laravel-graphql#creating-a-mutation][1]
上的文档并阅读了 graphql 网站的文档,并以多种方式更改了我的 args 定义样式,但都失败了,并且 Strange 是我可以得到参数但是使用 static variable 像 follow
mutation edit{
user_edit(id:1) {
user_name
}
}
然后成功了!我试图谷歌但对此一无所知。我想我真的需要一些帮助
比较文档与您的代码,似乎在您的 args
方法中,您需要指定 arg 名称,如下所示:
public function args()
{
return [
'id' => [
'type' => Type::int(),
'name' => 'id'
],
];
}
参考:https://github.com/Folkloreatelier/laravel-graphql#creating-a-query
希望对您有所帮助!
此致
原因是因为版本较低,如果你安装laravel-graphql版本为'~1.0.0',
去修改config/graphql.php
// The name of the input that contain variables when you query the endpoint.
// Some library use "variables", you can change it here. "params" will stay
// the default for now but will be changed to "variables" in the next major
// release.
'variables_input_name' => 'variables', // modify here from 'params' to 'variables'