2017-02-22 61 views
0

我正在使用版本v1.4.2.18。這個庫可以在這裏找到:https://github.com/Youshido/GraphQL帶有嵌套字段的PHP Youshido GraphQL問題

我試圖完成以下任務:

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

我有一個ArticleSummaryField.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'] 
     ]; 
    } 
} 

然後ArticleSummaryType.php:

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

然後ArticleField.php有getType方法返回ArticleType whi ch有id字段。

但是我所得到的是一個錯誤:

Fatal error: Uncaught Error: Call to undefined method ArticleField::getNullableType() in .../vendor/youshido/graphql/src/Execution/Processor.php on line 135 

什麼似乎是發生的是,當$targetField->getType()在SRC /執行/ Processor.php線135被稱爲其返回ArticleField類,而不是ArticleType類。

我希望能返回在ArticleField類的'getType'方法中聲明的類。

我是否在嵌套字段中遇到這種錯誤?或者庫中是否有bug?

回答

0

要完成此操作,只需將Field類作爲第一個參數傳遞。

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

然後在該領域類,你可以重寫getName爲所需字段中設置的名稱,否則將使用類名作爲字段名。