2014-01-13 3 views
0

У меня есть 2 таблицы со многими-ко-многим отношениями => пользователи, роли.Доктрина много-много отношений НЕ В [совместный]

Мне нужно найти всех пользователей, которые НЕ В ЛЮБОЙ РОЛИ.

В SQL это можно сделать:

SELECT * 
FROM `user` 
WHERE `id` NOT 
IN (
    SELECT `user_Id` 
    FROM user_role 
) 

user_role является соединение таблицы многие ко многим из user и role.

Как получить тот же результат с DQL?

UPDATE

user_role таблица представляет собой автоматизированное отображение из доктрины, если я пытаюсь использовать его, я получаю «объект не найден»

Просить Лучше:

Как я могу сделать тот же результат с CreateQueryBuilder?

Я не могу использовать таблицу user_role в моей сущности, потому что она автогенерирована с аннотацией многомиллионного relationship (или я могу ее использовать?).

+0

'НЕ в' стало бы' НЕ СУЩЕСТВУЕТ 'в' DQL' – sroes

ответ

0

Это должно работать:

SELECT u 
FROM user u 
LEFT JOIN u.roles r 
WHERE r IS NULL 
+0

, очевидно, эта работа! спасибо! – Raffaello

0

, как вы делаете вы должны получить необходимые результаты Или вы можете сделать что-то вроде присоединиться к этой

SELECT * 
FROM user u LEFT OUTER JOIN user_role ur 
ON u.id = ur.user_Id 
WHERE ur.user_Id IS NULL 
Смежные вопросы