问题是因为默认情况下,ApiPlatform使用Doctrine作为查询构建器,并且需要手动选择正确的查询参数以在过滤器中起作用。
下面给出一个代码示例,以在ApiFilter中正确设置查询参数,以便在结果中显示正确的过滤项:
createQueryBuilder('e');
foreach ($filters as $field => $value) {
$qb->andWhere(sprintf('e.%s = :%s', $field, $field))
->setParameter($field, $value);
}
return $qb->getQuery()->getResult();
}
}
在上面的示例中,我们通过遍历传递给Repository的$filter数组来构建查询,并动态地生成过滤条件。要查看这个Repository示例的完整实现,请查看本地的Repository代码。
重要提示:如果Store过滤器已在您的ApiPlatform项目中设置,请确保在设置getter函数的过滤器参数时不包括它。这是因为筛选器将使用DoctrineQueryBuilder::$expr根据它们在getter函数中设置的规则动态地生成过滤器。
上一篇:API-Platform: 在Swagger中使用多个主键时出现错误
下一篇:Api-platform测试客户端的getResponse()被标记为@internal,我应该使用什么替代方法?