Ответ 1
Я бы предположил, что конструкция SELECT DISTINCT ON (..)
, поддерживаемая PostgreSQL, находится за пределами реляционной модели объекта (ORM), которая является центральной для Doctrine. Или, возможно, по-другому, потому что SELECT DISTINCT ON (..)
встречается редко в реализациях SQL. Doctrine не закодирована для него.
Независимо от фактической логики для этого не работает, я предлагаю вам попробовать Doctrine " Native SQL". Вам нужно сопоставить результаты вашего запроса с ORM.
С помощью
NativeQuery
вы можете выполнить собственные инструкции SELECT SQL и карту результаты для сущностей Doctrine или любого другого формата результата поддерживаются по Доктрине.Чтобы сделать это сопоставление возможным, вам необходимо описать Учтите, какие столбцы в результирующей карте, к которой относится свойство объекта. Эта описание представлено объектом
ResultSetMapping
.С помощью этой функции вы можете сопоставить произвольный код SQL для объектов, таких как оптимизированный с высокой степенью автоматизации SQL или хранимые процедуры.
SELECT DISTINCT ON (..)
попадает в оптимизированный для продавцов SQL. Я думаю, поэтому использование NativeQuery
должно позволить вам получить к нему доступ.