Em SQL, esse tipo de consulta precisa do que é conhecido como
EXCEPTION JOIN
. Alguns RDBMSs realmente implementam isso como um tipo separado (como DB2), enquanto outros precisam usar uma solução alternativa. No seu caso, equivale a (em SQL):SELECT User.*
FROM User
LEFT JOIN UserHouse
ON UserHouse.id_user = User.id
WHERE UserHouse.id_user IS NULL
Qual produzirá os esperados registros 'não em casa'.
Existem exemplos semelhantes em vários lugares neste site.
Eu nunca usei o Doctrine, então não posso te ajudar lá. Mas meu melhor palpite seria algo como:
addWhere('uh IS NULL')
ou
addWhere('uh.id_user IS NULL')