嵌套字段的PHP Youshido GraphQL问题

时间:2017-02-22 19:37:28

标签: php-7 graphql

我使用的是版本v1.4.2.18。可在此处找到该库:https://github.com/Youshido/GraphQL

我正在努力完成以下任务:

FrameGrab.getFrame(new File(videoFileToRetreive.getVideoFile()), currentFrame);

我有一个ArticleSummaryField.php:

query { 
   articleSummary(id:1) {
       title,
       body,
       article {
          id
       }
   }
}

然后是ArticleSummaryType.php:

class ArticleSummaryField extends AbstractField
{
    public function build(FieldConfig $config)
    {
        $config->addArgument('id', new NonNullType(new StringType()));
    }

    public function getType()
    {

        return new ArticleSummaryType();
    }

    public function resolve($value, array $args, ResolveInfo $info)
    {
        return [
            'title' => 'test title',
            'body' => 'test body',
            'article' => $args['id']
        ];
    }
}

然后ArticleField.php让getType方法返回具有class ArticleSummaryType extends AbstractObjectType { public function build($config) { $config ->addField('title', new StringType()); ->addField('body', new StringType()); ->addField('article', new ArticleField()); } } 字段的ArticleType。

然而,我得到的是一个错误:

id

似乎正在发生的事情是,当调用src / Execution / Processor.php中第135行的Fatal error: Uncaught Error: Call to undefined method ArticleField::getNullableType() in .../vendor/youshido/graphql/src/Execution/Processor.php on line 135 时,它返回$targetField->getType()类,而不是ArticleField类。

我希望返回在ArticleField类的'getType'方法中声明的类。

我是否会因为筑巢而错误?或者库中是否有错误?

1 个答案:

答案 0 :(得分:0)

要完成此操作,您只需将Field类作为第一个参数传递。

class ArticleSummaryType extends AbstractObjectType
{
    public function build($config)
    {
        $config
            ->addField('title', new StringType());
            ->addField('body', new StringType());
            ->addField(new ArticleField());
    }
}

然后在字段类中,您可以覆盖getName以根据需要设置字段的名称,或者使用类名作为字段名称。