0

如何选择属于 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(老师)

例如)我可以像这样从用户表中选择“鲍勃”

$query = $em->createQuery(
    "SELECT p.name,p.sex
        FROM UserBundle:User p WHERE 
    p.id = '1' );

但我想选择属于学生组的用户(鲍勃和肯)

我应该如何更改 createQuery 中的句子?

我只是想我需要加入表格...


额外的....

根据法比奥的回答,我已经尝试过这样

    $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()?

4

1 回答 1

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'
于 2013-06-08T15:03:37.050 回答