gpt4 book ai didi

php - 在 Symfony2 中使用 JOIN 条件查找

转载 作者:可可西里 更新时间:2023-11-01 12:46:12 25 4
gpt4 key购买 nike

我有 3 个简单的表:用户、角色、具有多对多关系的 user_x_role。我有 2 个实体:用户和角色。用户实体具有带有关系注释的 $userRoles 属性。在 Controller 中,我需要获取所有具有特定角色的用户。但我不知道如何在 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));

它显示“未定义索引:joinColumns in ...”。但是我在用户实体中有 joinColumns:

/**
* @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", referencedColumnName="id", onDelete="CASCADE", onUpdate="CASCADE")}
* )
* @var ArrayCollection
*/
protected $userRoles;

最佳答案

IMO 最好的方法是为用户实体创建自己的存储库。然后在该存储库中创建类似“getUsersByRole”的方法,您可以在其中使用查询构建器进行所需的查询。

 $qb = $this->getEntityManager()->createQueryBuilder();
$qb->select('u')
->from('\namespace\for\User', 'u')
->join('u.roles', 'r')
->where(...)

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

关于php - 在 Symfony2 中使用 JOIN 条件查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12257911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com