如何选择属于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(老师)
ex)我可以像这样从用户表中选择'Bob'
$query = $em->createQuery(
"SELECT p.name,p.sex
FROM UserBundle:User p WHERE
p.id = '1' );
但我想选择属于学生组的用户(Bob和Ken)
我应该如何更改createQuery中的句子?
我猜我需要加入这些表格......
...附加
我试过像Fabio那样的回答
$query = $em->createQuery(
"SELECT p,p.id,p.username,p.userKey
FROM UserBundle:User p
INNER JOIN fos_user_user_group b
ON a.ID = b.user_id
INNER JOIN fos_group c
ON b.group_id = c.ID
WHERE c.group_id = '1'");
$this->data["teachers"] = $query->getResult();
但它说
[Semantical Error] line 0, col 94 near 'fos_user_user_group': Error: Class 'fos_user_user_group' is not defined.
我想这意味着我没有'fos_user_user_group'的实体。 我只有Group和User的实体类,其他表是自动创建的。
与此同时,我在$ formmapper的其他地方使用过这样的东西。
->add('teacher',
null,
array(
'query_builder' =>
function (\Doctrine\ORM\EntityRepository $rep) {
return $rep->
createQueryBuilder('s')
->join('s.groups', 'g')
->where('g.name = :group')->setParameter('group','TeacherGroup');
})
)
效果很好, 如何更改createQuery()的句子?
答案 0 :(得分:2)
我认为您可以使用INNER JOIN
查询
SELECT p.name,p.sex
FROM User p
INNER JOIN fos_user_user_group b
ON a.ID = b.user_id
INNER JOIN fos_group c
ON b.group_id = c.ID
WHERE c.group_id = '1'