加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在Symfony2中使用JOIN标准查找

发布时间:2020-12-13 22:38:24 所属栏目:PHP教程 来源:网络整理
导读:我有3个简单的表:user,role,user_x_role with Many-To-Many relation.我有2个实体:用户和角色.用户实体具有带有关系注释的$userRoles属性.在Controller中,我需要获取具有特定角色的所有用户.但我不知道如何在控制器中使用JOIN.目前错误的代码: $role = $t
我有3个简单的表:user,role,user_x_role with Many-To-Many relation.我有2个实体:用户和角色.用户实体具有带有关系注释的$userRoles属性.在Controller中,我需要获取具有特定角色的所有用户.但我不知道如何在控制器中使用JOIN.目前错误的代码:
$role = $this->getDoctrine()->getRepository('TestBackEndBundle:Role');
$roles = $role->findBy(array('name' => 'ROLE_PARTNER'));

$user = $this->getDoctrine()->getRepository('TestBackEndBundle:User');
$partners = $user->findBy(array('userRoles' => $roles));

它显示“Undefined index:joinColumns in …”.但我在用户实体中有joinColumns:

/**
 * @ORMManyToMany(targetEntity="Role")
 * @ORMJoinTable(name="user_x_role",*     joinColumns={@ORMJoinColumn(name="user_id",referencedColumnName="id",onDelete="CASCADE",onUpdate="CASCADE")},*     inverseJoinColumns={@ORMJoinColumn(name="role_id",onUpdate="CASCADE")}
 * )
 * @var ArrayCollection
 */
protected $userRoles;
IMO最好的方法是为User实体创建自己的存储库.然后在该存储库中创建方法,如“getUsersByRole”,您可以使用查询构建器进行所需的查询.
$qb = $this->getEntityManager()->createQueryBuilder();
 $qb->select('u')
     ->from('namespaceforUser','u')
     ->join('u.roles','r')
     ->where(...)

 return $qb->getQuery()->getResult();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读