graphql-php谁通过ID获得结果

时间:2018-10-12 08:40:24

标签: php graphql graphql-php

我是graphql的新秀,并且我从未使用过rest或其他类似语言。

我现在可以用我的水平获取固定值了。

我有一个如下的架构文件 demo.schema

schema {
  query: Query
}

type Query {
  id(id: Int): sub
}

type sub{
    name: String
    age: Int
}

这是demo.php:

declare(strict_types=1);
require_once 'vendor/autoload.php';
$typedef = file_get_contents('demo.graphql');

$rootValue = include 'rootvalue.php';

use \GraphQL\GraphQL;
use \GraphQL\Utils\BuildSchema;


// build schema and get query string
$schema = BuildSchema::build($typedef);
$param = file_get_contents("php://input");
$param = json_decode($param, true);
$param = $param['query'];

// get result and print it
$r = GraphQL::executeQuery($schema, $param, $rootValue)->toArray();
print_r(json_encode($r));

这是rootvalue.php

interface Root
{
    public function reslove($root, $args, $context);
}


class age implements Root
{
    public function reslove($root, $args, $context)
    {
        return 30;
    }
}

class name implements Root
{
    public function reslove($root, $args, $context)
    {
        return 'Miami';
    }
}

return [
    'id'       =>  function($root, $args){
        return $root;
    },

    'age'       =>  function($root, $args, $context) {
        $new = new age();
        return $new->reslove($root, $args, $context);
    },

    'name'       =>  function($root, $args, $context) {
        $new = new name();
        return $new->reslove($root, $args, $context);
    },
];

现在有一个名为user的mysql数据库表,它具有idnameage字段

我怎么能得到像user.id=1

这样的结果

现在,我只能返回“ 30”,“迈阿密”之类的值。

但是现在,我需要按数据库来获取数据,所以这将是从客户端浏览器进行的这样的查询

query{
    id(id: 0){
        name
        age
    }
}

我知道l cat在rootvalue.php中获得arg的id值

'id'=>function($root, $args){
        $args['id'] // it will be get a value '1'
        return $root;
    },

但是我能做的事是我的极限。我无法在其他地方获取ID,该怎么办?

PS: 我知道如何从数据库获取数据,只是不知道获取数据库的时间,以及如何将这些数据传输到子对象

0 个答案:

没有答案