我有我的两个类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