В нашем API нам нужно показывать только отфильтрованные данные.Пример:
Объект сделки имеет отношение «один ко многим» с объектом «Менеджер» (таким образом, $ manager является подресурсом для сделки).Мне нужно отфильтровать все позиции сделки по специальному значению, например, фамилия менеджера.Я сделал SearchFilter по фамилии менеджера Deal.
@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 проблема , но без решения там.