2015-04-28 78 views
0

用戶有一個角色。 角色擁有零個或多個用戶。Doctrine2獲得無關係的對象

我想找到沒有用戶的角色。

我需要此查詢,而無需使用IN或NOT IN

我試圖加入:

$qb = $this->createQueryBuilder('role'); 
$qb 
    ->leftJoin('role.users', 'users') 
    ->where('users IS NULL') 

沒有加入

$qb = $this->createQueryBuilder('role'); 
$qb 
    ->where('role.users IS NULL') 

與ID:

$qb = $this->createQueryBuilder('role'); 
$qb 
    ->leftJoin('role.users', 'users') 
    ->where('users.role != role') 

你有其他想法嗎?除了使用IN/NOT IN查詢之外,我沒有別的選擇嗎?

在此先感謝

回答

2

您可以找到不使用數查詢

$qb = $this->createQueryBuilder('role'); 
$qb ->addSelect('COUNT(users.id) AS total_users') 
    ->leftJoin('role.users', 'users') 
    ->groupBy('role.id') 
    ->having('total_users = 0') 
    ->getQuery()->getResult(); 
+0

我有錯誤有任何用戶的角色:無效PathExpression。 StateFieldPathExpression或SingleValuedAssociationField預期。任何想法爲什麼? – goto

+0

@goto更改計數爲COUNT(users.id)' –

+0

謝謝,但你知道如何避免8250查詢完成的教條:O – goto