querybuilder left inner andwhere doctrine dql self-join

left - set parameters doctrine



Doctrine2 Self Join, ¿Cómo unirse a sí mismo sin una columna de relación? (1)

Lo averigué. Pensé que compartiría.

SELECT a1 FROM My/Model/Agreement a1 LEFT JOIN My/Model/Agreement a2 WITH a1.agreementType = a2.agreementType AND a2.id > a1.id WHERE a2.id IS NULL

Ejemplo de consulta mysql:

SELECT a1.* FROM agreement a1 LEFT JOIN agreement a2 on a1.agreementType = a2.agreementType and a2.id > a1.id WHERE a2.id is null

El propósito de la consulta es obtener el último acuerdo del tipo devuelto. Hay muchos tipos y solo quiero una lista de cada acuerdo más reciente para cada tipo. Mi consulta de ejemplo anterior funciona como se esperaba, pero no va en DQL.

¿Cómo haría esto en DQL dado que no tengo una columna que se refiera a sí misma? Tenga en cuenta que "agreementType" también es una clave externa para una tabla diferente también.