2013-04-23 73 views
0

我可以選擇這個SQL有「性= 2」的用戶查詢來獲取它們屬於一個組的用戶列表

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

如何選擇它們屬於一個組的用戶?

我的表格如下。

我的用戶表。

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 

這意味着

鮑勃和Ken都屬於GROUP_1(學生)

加代是belongi NG到group_2(教師)

我想選擇從用戶表這是屬於「學生」或「老師」


我想已經是屬於學生的用戶名列表中列出。

ID |名稱|性別 1 | bob | 1 3 | ken | 1

+0

什麼是你想要的輸出。請以表格的形式 – 2013-04-23 08:00:48

回答

1

您需要首先進行連接,然後篩選關聯屬性。

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

請參閱http://docs.doctrine-project.org/en/2.0.x/reference/dql-doctrine-query-language.html#joins瞭解有關與DQL關聯的過濾示例。

+0

太棒了!非常感謝Ryan.it也是很好的例子。 – whitebear 2013-04-23 18:47:59

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 

OUTPUT:

GroupName | Users 
--------------------------- 
student  | bob , ken 
teacher  | kayo 
+0

感謝raheel shan.I使用Ryan的答案,但我應該提前寫入所需的表格數據 – whitebear 2013-04-23 18:48:31

相關問題