私はcodeigniterとdoctrineを使ってチャットアプリケーションを構築しています。
テーブル:
-ユーザー
-User_roles
-User_available
関係:
1人のユーザーには多くの役割があります。1人のuser_availableには1人のユーザーがいます。
チャットに使用できるユーザーは、user_availableテーブルにあります。
問題:
role_id7を取得していないuser_availableにすべてのユーザーを取り込む必要があります。
したがって、DQLで次のように表現する必要があります(これはSQLでもなく、言葉で表現するだけです):
SELECT * from user_available WHERE NOT user_available.User.Role.role_id = 7
本当にこれにこだわる
編集:私は不明確だったと思います。テーブルはすでにマップされており、DoctrineがINNERJOINの仕事をしてくれます。私はこのコードを使用して、最も長く待機した管理者を取得していますが、今はユーザーが必要です。
$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();