在我们的API中,我们只需要显示过滤后的数据。示例:
交易实体与管理者实体具有一对多关系(因此$ managers是交易的子资源)。我需要过滤所有具有特殊值的交易项目,例如Manager的姓氏。我对经理的姓氏交易做了一个SearchFilter。
@ApiFilter(SearchFilter::class, properties={"managers.surname": "exact"})
它可以按预期工作,但是交易的结果集合包含未过滤的经理。
正如我调查的那样,用于过滤交易的查询包含所需条件,但仅在子查询中。
#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
如何将其复制到上级?也许有适当的方法来处理我的问题?我发现了同样的问题Github issue,但那里没有任何解决方案。