Как устроить репозиторий для статистических данных по таблицам?
Всем привет.
Есть некие таблицы, для которых заведены entity, repository и прочие кошерные вещи.
Есть необходимость по этим таблицам произвести запросы с различными статистическими подсчетами (count, sum и т.п.).
Куда и как будет правильно вынести лапшекод с конструктором запросов, чтобы контроллер не стал "толстым"?
Была мысль для получения таких данных завести EntityRepository, в котором строить запросы используя createQueryBuilder, но на сколько понимаю, он должен быть привязан к какой-нибудь сущности. В моем же случае сущность вообще не важна.
Была мысль для получения таких данных завести EntityRepository, в котором строить запросы используя createQueryBuilder, но на сколько понимаю, он должен быть привязан к какой-нибудь сущности.
Напрашивается очевидный ход - сущность статистика, можно даже под нее таблицу завести, например для каких-то отчетов.
ThunderCat, судя по общему устройству, не можно, а придется, ведь EntityRepository вяжется с ORM и не будет нормально работать с сущностью, висящей в воздухе, так? А это уже для данной задачи избыточно.
MikUrrey, Тут вопрос не в избыточности, а в сохранении переиспользования кода/архитектуры. Да, это костыль, но это структурный костыль, не изменяющий общих принципов построения моделей. То есть мы сохраняем архитектуру, жертвуя оптимальностью, имея некоторую избыточность в угоду общему подходу.
ThunderCat, это все же очень спорное решение. Тогда лучше не репозиторий, а некий сферический AnalyticsQueryService, который и лапшу инкапсулирует, и таблицы не потребует, и даже даст основу для повторного использования (хотя оно в проекте вряд ли потребуется).
EntityRepository, в котором строить запросы используя createQueryBuilder, но на сколько понимаю, он должен быть привязан к какой-нибудь сущности. В моем же случае сущность вообще не важна.
Можно сделать репозиторий без какой либо привязки к сущностям, а в качестве QueryBuilder использовать не ORM/QueryBuilder, а DBAL/QueryBuilder. Получить его можно из инстанса Connection (а его в свою очередь заинжектить через конструктор)
MikUrrey, вот только это НЕ репозиторий. Не стоит называть его репозиторием и держать в папке репозиториев. После переименования и перемещение будет норм.