Доктрина 2 Оптимизация голосования субъектов - PullRequest
0 голосов
/ 11 марта 2012

Я пытаюсь найти оптимальный способ реализации голосов "за" / против в отношении нескольких родительских объектов.

В настоящее время я использую InheritanceType("SINGLE_TABLE") для голосования с родительскими отношениями в подклассах.Я также использую: fetch="EXTRA_LAZY" - в основном, чтобы я мог делать count() без загрузки объекта полного голосования при подсчете голосов с точки зрения родительского объекта.

Моя проблема в том, что я не хочуреализовать отдельный класс сущностей UpVote и DownVote для каждого родительского отношения, но вместо этого использовать поле значения внутри базового класса голосования.Предпочтительно, я бы хотел запустить $qb->expr()->sum() на загруженной ArrayCollection как-нибудь, подобно count().(Такая сумма может быть возвращена в виде скаляра из базы данных напрямую, используя только родительскую сущность, без управления сущностями или необходимости загружать каждую единицу голосования для суммирования - например, в сценарии представления)

Поддерживается ли это?(Или как добиться желаемого эффекта?)

Не уверен, что вышеприведенное является лучшим решением этой проблемы - альтернативные примеры лучших практик для голосования с использованием Доктрины 2 приветствуются!

* Редактировать : исправлено LAZY -> EXTRA_LAZY

1 Ответ

1 голос
/ 11 марта 2012

Ленивая загрузка все равно будет загружать все объекты при попытке подсчета.Использование EXTRA_LAZY выдаст инструкцию count при подсчете объектов вместо загрузки их всех.

...