#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
, который знал, что контекстно отфильтровывает «неактивные» объекты. Это можно сделать глобально с помощью расширения запроса, но я не уверен, как это будет сделано контекстуально в зависимости от запрошенного запроса.