DQL - использование объединений вместо EXISTS
Обычно, когда я хочу проверить, существует ли что-то в связанной таблице, я оставляю присоединение к таблице и проверяю, получаю ли я что-то обратно, например, допустим, я хочу выбрать все роли без подключения к значению разрешения 2, запрос будет выглядеть что-то вроде этого:
SELECT r.* FROM roles r LEFT JOIN permissions p ON r.id = p.role_id AND p.value = 2 WHERE p.id IS NULL
Теперь я хочу сделать что-то подобное в DQL, но не могу заставить это работать, потому что в JOIN нет ON, не уверен, возможно ли это, но это то, что я получил в настоящее время (очевидно, это не будет работать)
SELECT r FROM User\Role r LEFT JOIN r.permissions p WHERE p.value = 2 AND p IS NULL // This will not work