In SQL benötigt diese Art von Abfrage einen sogenannten EXCEPTION JOIN
. Einige RDBMSs implementieren dies tatsächlich als separaten Typ (z. B. DB2), während andere eine Problemumgehung verwenden müssen. In Ihrem Fall beträgt es (in SQL):
SELECT User.*
FROM User
LEFT JOIN UserHouse
ON UserHouse.id_user = User.id
WHERE UserHouse.id_user IS NULL
Was ergeben wird die erwarteten 'nicht in einem Haus'-Aufzeichnungen.
Es gibt ähnliche Beispiele an mehreren Stellen auf dieser Website.
Ich habe Doctrine noch nie benutzt, also kann ich dir da nicht helfen. Aber meine beste Vermutung wäre so etwas wie:
addWhere('uh IS NULL')
oder
addWhere('uh.id_user IS NULL')