Тонкие контроллеры. Куда вынести логику построения запросов и фильтрации в Laravel
У меня есть приложение с REST API, в котором я хочу использовать тонкие контроллеры и вынести всю бизнес-логику в Service-классы. Однако возникла проблема с index методом, где используется ORM для построения запросов. Получаются очень большие запросы, из-за того, что приходится присоединять много других таблиц, в том числе и с агригацией. Особенно всё плохо с полиморфными сущностями. Это всё делается на уровня запроса, а не связей модели т.к. нужно сортировка на БД по присоединённым полям. В сервис это всё переносить, мне кажется не правильно, а в контроллере оставлять тем более.
Я не хочу переносить всю эту логику в модель, так как это сделает модель слишком тяжелой с учетом уже реализованных там методов фильтрации. Я ищу паттерны, которые помогут разгрузить модель и перенести логику построения запросов и фильтрации в другое место. Какие есть подходы для решения этой проблемы?