Symfony 使用对象';s法
我需要构建一个查询,返回所有以ROLE\u ADMIN作为ROLE的用户(我使用FOSUserBundle) Il已经尝试过这个方法,但不起作用,它抛出了“警告:get_class()期望参数1是object,boolean给定的”Symfony 使用对象';s法,symfony,doctrine-orm,Symfony,Doctrine Orm,我需要构建一个查询,返回所有以ROLE\u ADMIN作为ROLE的用户(我使用FOSUserBundle) Il已经尝试过这个方法,但不起作用,它抛出了“警告:get_class()期望参数1是object,boolean给定的” 请注意,如果没有where条件,它会工作,并且我返回了dabatase中的所有用户。这是您应该如何调用where: public function getAdminQueryBuilder() { return $this->createQueryBu
请注意,如果没有where条件,它会工作,并且我返回了dabatase中的所有用户。这是您应该如何调用
where
:
public function getAdminQueryBuilder() {
return $this->createQueryBuilder('u')
->where('u.hasRole = :role')
->setParameter('role', 'ROLE_ADMIN')
;
}
如果有问题,请告诉我
编辑#2 请尝试以下方法:
public function getAdminQueryBuilder() {
return $this->createQueryBuilder('u')
->where('u.roles LIKE :roles')
->setParameter('roles', '%ROLE_ADMIN%')
;
}
我认为它应该可以工作,但不能确定。谢谢你的回答,但它会抛出“[Semantical Error]第0行,第54列靠近'hasRole=:r':错误:Class AppBundle\UserBundle\Entity\User没有名为hasRole的字段或关联”。看起来它不考虑HasPin作为一个函数吗?你已经考虑过<代码> @安全(“HasiGuff'(RoLyAdmin)))< /Cord>路由注释吗?是的,该消息意味着在
User
实体中没有定义hasRole
字段。我的AppBundle中的用户实体扩展了包含此方法的FOSUserBundle的用户entyti:public function hasRole($role){return in_array(strtoupper($role),$this->getRoles(),true);}
问题在于这是一个方法,而不是一个属性。我添加了第二次编辑。因为角色
是一个数组。请试一试。
public function getAdminQueryBuilder() {
return $this->createQueryBuilder('u')
->where('u.roles LIKE :roles')
->setParameter('roles', '%ROLE_ADMIN%')
;
}