【问题标题】:Drupal GraphQL logic for Resolver for a field with multiple values用于具有多个值的字段的解析器的 Drupal GraphQL 逻辑
【发布时间】:2020-06-18 06:39:16
【问题描述】:

我第一个使用 GraphQL 的 Drupal 无头项目,我正在为解析器背后的逻辑而苦苦挣扎。

有一个内容类型“项目”,其中包含一个字段“field_project_description”。该字段可以存储多个值。

这是我的架构的一部分:

type Project {
  id: Int!
  project_title: String!
  project_description: [ProjectDescription]
}

type ProjectDescription {
  value: String
}

这就是相应解析器的一部分的外观:

    $registry->addFieldResolver('ProjectDescription', 'value',
      $builder->produce('property_path')
        ->map('type', $builder->fromValue('entity:node'))
        ->map('value', $builder->fromParent())
        ->map('path', $builder->fromValue('field_project_project_desc.value'))
    );

但据我了解,必须有另一个解析器,例如

$registry->addFieldResolver('Project', 'project_description',

我不知道这个解析器长什么样。

【问题讨论】:

    标签: reactjs graphql drupal-8 react-apollo


    【解决方案1】:

    好的,我自己解决了这个问题。答案其实很简单。

    您不需要第二个解析器。只需一个带有附加 PHP 函数的解析器,它将数组扁平化为字符串就足够了。这就是代码现在的样子。

    架构:

    type Project {
      id: Int!
      project_title: String!
      project_description: [String]
    }
    

    以及解析器:

    $registry->addFieldResolver('Project', 'project_description',
      $builder->compose(
        $builder->produce('property_path')
          ->map('type', $builder->fromValue('entity:node'))
          ->map('value', $builder->fromParent())
          ->map('path', $builder->fromValue('field_project_project_desc')),
        $builder->callback(function ($entity) {
          $list = [];
          foreach($entity as $item){
            array_push($list, $item['value']);
          }
          return $list;
        })
      )
    );
    

    我希望我可以帮助其他人。

    【讨论】:

      猜你喜欢
      • 2021-07-26
      • 2019-03-21
      • 2017-06-03
      • 1970-01-01
      • 2021-05-19
      • 2020-10-07
      • 2018-03-18
      • 1970-01-01
      • 2021-07-28
      相关资源
      最近更新 更多