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

时间:2018-10-11 15:20:28

标签: symfony doctrine api-platform.com

在我们的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,但那里没有任何解决方案。

0 个答案:

没有答案