Я создаю приложение чата с codeigniter и доктриной.
Таблицы:
- пользователь
- User_roles
- Пользователь доступен
Отношения:
ОДИН пользователь имеет МНОГО ролей.
ОДИН user_available имеет ОДНОГО пользователя.
Пользователи, доступные для чата, будут в таблице user_available.
Проблема:
Мне нужно, чтобы все пользователи в user_available, у которых нет role_id 7.
Так что мне нужно выразить в DQL что-то вроде (это даже не SQL, просто словами):
SELECT * из user_available ГДЕ НЕ user_available.User.Role.role_id = 7
Действительно застрял на этом
EDIT:
Думаю, мне было неясно. Таблицы уже сопоставлены, и Doctrine выполняет работу INNER JOIN для меня.
Я использую этот код, чтобы получить администратора, который ждал дольше всего, но теперь мне нужен пользователь:
$admin = Doctrine_Query::create()
->select('c.id')
->from('Chat_available c')
->where('c.User.Roles.role_id = ?', 7)
->groupBy('c.id')
->orderBy('c.created_at ASC')
->fetchOne();
Теперь мне нужно получить пользователя, который ждал дольше всего, но это НЕ работает
$admin = Doctrine_Query::create()
->select('c.id')
->from('Chat_available c')
->where('c.User.Roles.role_id != ?', 7)
->groupBy('c.id')
->orderBy('c.created_at ASC')
->fetchOne();