0

このSQLで「性別= 2」のユーザーを選択できます

createQueryBuilder('s')
->where('s.sex = 2');

グループ A に属するユーザーを選択するにはどうすればよいですか?

私のテーブルは以下です。

私のユーザーテーブル。

ID | name |sex
1  | bob  |1
2  | kayo |2
3  | ken  |1

私の fos_group テーブル

ID | name
1  | student
2  | teacher

私の fos_user_user_group

user_id | group_id
1       | 1
2       | 2
3       | 1

だということだ

Bob と Ken は group_1(student) に属しています。

佳代はgroup_2(先生)に所属しています

「学生」または「教師」に属するユーザー テーブルからリストを選択したいと思います。


私が欲しいのは、学生に属するユーザー名リストです。

ID | 名前 | セックス 1 | ボブ |1 3 | けん |1

4

2 に答える 2

1

最初に結合を行い、次に関連付けプロパティでフィルター処理する必要があります。

$entityRepository
  ->createQueryBuilder('s')
  ->join('s.groups', 'g') // Assuming the association on your user entity is 'groups'
  ->where('g.name = :group')->setParameter('group', 'student');

DQL との関連付けのフィルタリングの例については、 http://docs.doctrine-project.org/en/2.0.x/reference/dql-doctrine-query-language.html#joinsを参照してください。

于 2013-04-23T08:03:07.753 に答える
0
SELECT
    g.name AS GroupName,
    GROUP_CONCAT(u.name) AS Users
FROM fos_group AS g
INNER JOIN fos_user_user_group AS ug ON ug.group_id = g.ID
INNER JOIN user AS u ON u.id = ug.user_id
GROUP BY g.name

出力:

GroupName   |   Users
---------------------------
student     |   bob ,   ken
teacher     |   kayo
于 2013-04-23T08:03:16.760 に答える