首页 > 解决方案 > 使用 Api 平台的 GraphQL 查询解析器未按预期过滤嵌入式资源

问题描述

在自定义查询解析器中,我删除了所有questions但响应图数据仍包含所有questions. 我知道返回的item不包含这种情况下的问题。(由调试确定)

因此,似乎正在解析的响应不是直接从返回的资源/实体中获取的。

我希望这个活动基于“操作”级别发生,所以我不相信我可以在查询扩展之类的东西中做到这一点。

我的解析器片段如下:

<?php

namespace App\Resolver;

use ApiPlatform\Core\GraphQl\Resolver\QueryItemResolverInterface;
use App\Entity\Quiz;

final class ActiveQuizResolver implements QueryItemResolverInterface
{
    /**
     * @param Quiz|null $item
     *
     * @return Quiz
     */
    public function __invoke($item, array $context)
    {

      foreach ($item->getQuestions() as $question) {
        // if (!$question->getActive()) {
          $item->removeQuestion($question);
        // }
      }

      return $item;
    }
}

GraphQL 注释细节:

    graphql: [
        'item_query' => [
          'security' => "is_granted('ROLE_USER')"
        ],
        'active' => [
          'item_query' => ActiveQuizResolver::class,
          'security' => "is_granted('ROLE_USER')"
        ],
        ...
    ]

标签: graphqlapi-platform.com

解决方案


推荐阅读