Doctrine2: Join sin relación

Últimamente tengo poco tiempo, pero no quiero perder la costumbre de escribir artículos aunque sean cortos como es este caso. Además, últimamente hemos recibido varios correos proponiendo temas para hacer artículos y eso se agradece mucho! En este caso, Manuel Aguirre, nos recomendó hacer un artículo sobre la posibilidad de hacer Joins en Doctrine2 sin necesidad de que tengan una relación directa.

A veces creamos relaciones en las entities para poder hacer consultas, por ejemplo, si tuviéramos una entidad User y otra Country y queremos obtener los usuarios de un país, lo que podemos hacer es añadir a la entidad Country un atributo $users y podemos hacer la consulta en DQL así:

A partir de la versión 2.3 de Doctrine, se puede hacer lo siguiente:

De esta forma no es necesario que Country tenga un atributo $users que sólo lo usamos para cuando hacemos consultas. Los Join se pueden usar tanto en DQL como con QueryBuilder.