Распознаватель запросов GraphQL, использующий платформу Api, не фильтрует встроенные ресурсы, как ожидалось

#graphql #api-platform.com

Вопрос:

В пользовательском распознавателе запросов я удаляю все questions , но данные графика ответов по-прежнему содержат все questions . Я знаю, что возвращенное item НЕ содержит вопросов в данном случае. (определяется путем отладки)

Таким образом, кажется, что разрешаемый ответ не берется непосредственно из возвращаемого ресурса/объекта.

Я бы хотел, чтобы это действие выполнялось на уровне «операция», поэтому я не верю, что смогу сделать это в чем-то вроде расширения запроса.

Мой фрагмент резюме ниже:

 <?php

namespace AppResolver;

use ApiPlatformCoreGraphQlResolverQueryItemResolverInterface;
use AppEntityQuiz;

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')"
        ],
        ...
    ]
 

Комментарии:

1. Не стесняйтесь предлагать способ достижения аналогичной функциональности. Что означало бы возврат item_query , который знал, что контекстно отфильтровывает «неактивные» объекты. Это можно сделать глобально с помощью расширения запроса, но я не уверен, как это будет сделано контекстуально в зависимости от запрошенного запроса.