graphql-php кто получить результат по id - PullRequest
0 голосов
/ 12 октября 2018

Я новичок в GraphQl, и я никогда не использовал rest или другой язык, подобный этому.

Я могу просто получить фиксированное значение с моим уровнем.

l у меня есть файл схемыкак следует 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);
    },
];

теперь таблица mysql db с именем user, он имеет id, name, age поля

как я могу получить результат, например user.id=1

, теперь я могу просто вернуть значение как '30', 'Miami'.

Но теперь мне нужно получить данные по базе данных, поэтому это будет такой запрос из клиентского браузера

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

Я знаю, что cat получает значение arg, равноеid в rootvalue.php

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

но это мой предел, что я могу сделать.Я не могу получить идентификатор в другом месте, как это сделать?

PS: я знаю, как получить данные из базы данных, просто не знаю время для извлечения базы данных и как передать эти данные вподобъект

...