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

前端之家收集整理的这篇文章主要介绍了php – 在Symfony2中使用JOIN标准查找前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有3个简单的表:user,role,user_x_role with Many-To-Many relation.我有2个实体:用户和角色.用户实体具有带有关系注释的$userRoles属性.在Controller中,我需要获取具有特定角色的所有用户.但我不知道如何在控制器中使用JOIN.目前错误代码: @H_403_1@$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:

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

猜你在找的PHP相关文章