查询以获取属于组的用户列表

时间:2013-04-23 07:58:51

标签: symfony doctrine

我可以通过此sql选择“sex = 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(学生)

Kayo属于group_2(老师)

我想从用户表中选择属于“学生”或“老师”的列表


我想要的是属于学生的用户名列表。

ID |名字|性别 1 |鲍勃| 1 3 |肯| 1

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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