【发布时间】:2012-04-14 00:25:41
【问题描述】:
我有两个类User 和Role,我需要创建一个QueryBuilder,它会为具有ROLE_PROVIDER 角色的用户返回一个查询。 Symfony 2 中的实体表单字段需要这个。在表单类定义中,我对提到的字段有以下 sn-p:
$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 查询,我将非常感激...
感谢您的帮助!
【问题讨论】:
标签: php symfony doctrine-orm dql query-builder