我有我的兩個類User
和Role
,我需要編寫一個QueryBuilder
,它爲具有ROLE_PROVIDER
角色的用戶返回一個查詢。我需要這在Symfony的2實體表單字段在窗體類定義我對所提場下面的代碼片段:Symfony 2中的Doctrine 2 - 通過關聯過濾QueryBuilder
$builder->add('provider', 'entity', array(
'class' => 'ElCuadreAccountBundle:User',
'property' => 'username',
'query_builder' => function(UserRepository $ur) {
return $ur->getUsersByRoleQB('ROLE_PROVIDER');
},
'required' => true,
));
然後在我的自定義UserRepository
我有以下功能,它應該返回QueryBuilder
對象:
public function getUsersByRoleQB($role) {
$qb = $this->createQueryBuilder('u');
return $qb->join('u.roles','r')
->where($qb->expr()->in('r.role',$qb->expr()->literal($role)))
->orderBy('u.username', 'ASC');
}
當然,這並不工作,但我粘貼它來說明我的需要。
我一直在環顧四周,似乎Doctrine2不支持通過關聯本機過濾。在this page他們這樣說,並建議使用DQL
進行這種過濾。我的問題是,我還沒有找到如何從DQL
句子中創建一個QueryBuilder
對象。如果您還可以爲我提供正確的DQL
查詢,我將不勝感激...
感謝您的幫助!
謝謝!真正完整的答案......有一個問題,它與原始問題沒有太大的關係,但是在這裏我去了......我已經多次閱讀過symfony 2和doctrine 2的新版本即將到來,而且人們似乎已經瞭解了新功能,但我已經厭倦了運行'php bin/vendors install',它不會升級symfony或教義......我該如何升級?或者什麼時候這些新版本將成爲官方?感謝您的回答!!! – Throoze 2012-04-14 23:39:43
你可以在這裏閱讀關於D2.2的信息:http://www.doctrine-project.org/。在S2.1發佈之前,S2將不會有D2.2集成,可能在今年夏天。但是,您可以直接安裝D2.2,在autoload.php中調整路徑,並且大部分您的教義代碼應該可以工作。查看文檔以瞭解要注意的事項。 – Cerad 2012-04-14 23:47:57
感謝您的回答! – Throoze 2012-04-15 08:06:36