Я пытаюсь найти оптимальный способ реализации голосов "за" / против в отношении нескольких родительских объектов.
В настоящее время я использую InheritanceType("SINGLE_TABLE")
для голосования с родительскими отношениями в подклассах.Я также использую: fetch="EXTRA_LAZY"
- в основном, чтобы я мог делать count()
без загрузки объекта полного голосования при подсчете голосов с точки зрения родительского объекта.
Моя проблема в том, что я не хочуреализовать отдельный класс сущностей UpVote и DownVote для каждого родительского отношения, но вместо этого использовать поле значения внутри базового класса голосования.Предпочтительно, я бы хотел запустить $qb->expr()->sum()
на загруженной ArrayCollection как-нибудь, подобно count()
.(Такая сумма может быть возвращена в виде скаляра из базы данных напрямую, используя только родительскую сущность, без управления сущностями или необходимости загружать каждую единицу голосования для суммирования - например, в сценарии представления)
Поддерживается ли это?(Или как добиться желаемого эффекта?)
Не уверен, что вышеприведенное является лучшим решением этой проблемы - альтернативные примеры лучших практик для голосования с использованием Доктрины 2 приветствуются!
* Редактировать : исправлено LAZY -> EXTRA_LAZY