小编Vas*_*rov的帖子

如何使用 Api 平台过滤器过滤实体子资源

在我们的 API 中,我们只需要显示过滤后的数据。例子:

Deal 实体与 Manager 实体具有一对多关系(因此 $managers 是 Deal 的子资源)。我需要过滤所有具有特殊值的交易项目,例如经理的姓氏。我对经理的姓氏 Deal 做了一个 SearchFilter。

@ApiFilter(SearchFilter::class, properties={"managers.surname": "exact"})
Run Code Online (Sandbox Code Playgroud)

它按预期工作,但交易结果集合包含未过滤的经理。

正如我所调查的,过滤交易的查询包含所需的条件,但仅在子查询中。

#Doctrine query dump goes here
SELECT ... FROM deal 
# bunch of JOINS here
WHERE deal.id IN (
SELECT d.id FROM deal d
JOIN manager m ... 
# bunch of JOINS here
WHERE m.surname = :surname
)
# but we need "WHERE m.surname = :surname" condition on the level up also
Run Code Online (Sandbox Code Playgroud)

如何将其复制到上层?也许有适当的方法来处理我的问题?我发现了一个同样的问题 Github issue但那里没有任何解决方案。

doctrine symfony api-platform.com

5
推荐指数
0
解决办法
2786
查看次数

标签 统计

api-platform.com ×1

doctrine ×1

symfony ×1