Доктрина връзка много към много НЕ Е В [съвместно]

Имам 2 таблици с връзка много към много => потребители, роли.

Трябва да намеря всички потребители, КОИТО НЕ СА В НИКАКВА РОЛЯ.

В SQL може да се направи:

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

user_role е таблицата за свързване на връзка много към много от user и role.

Как мога да получа същия резултат с DQL?

АКТУАЛИЗАЦИЯ

Таблицата user_role е автоматизирано картографиране от доктрина, ако се опитам да я използвам, получавам „субектът не е намерен“

Питане по-добре:

Как мога да направя същия резултат с CreateQueryBuilder?

Не мога да използвам таблицата user_role в моя обект, защото тя е автоматично генерирана с анотация за връзка много към много (или мога да я използвам?).


person Raffaello    schedule 13.01.2014    source източник
comment
NOT IN ще стане NOT EXISTS в DQL   -  person sroes    schedule 13.01.2014


Отговори (2)


Това трябва да работи:

SELECT u
FROM user u
LEFT JOIN u.roles r
WHERE r IS NULL
person sroes    schedule 13.01.2014

Начинът, по който се справяте, трябва да ви осигури необходимите резултати. Или можете да направите присъединяване нещо подобно

SELECT *
FROM user u LEFT OUTER JOIN user_role ur
ON u.id = ur.user_Id
WHERE ur.user_Id IS NULL
person M.Ali    schedule 13.01.2014