graphql - 使用 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')"
],
...
]
解决方案
推荐阅读
- java - 如何定义 JTable 的 Column 的数据类型与 MySql 数据库相同?
- c# - SetTextCharacterExtra 函数不适用于特定字体/字体大小的 DrawText 函数
- python - Pygame 删除对象
- c# - 任务并行数据流中一个块与多个单线程目标块并行的原因
- mysql - Laravel 7 MySQL完整性约束违规
- javascript - webpack-dev-server 未加载 html 文件
- c# - 我如何在 Linq 中获得最大日期
- python - 将变量名放在 x 轴中,而不是值
- laravel - Laravel - 使用 Carbon 子月在未来 6 个月内到期
- python - 如何在安装了现有软件包的情况下设置 python3 虚拟环境?