我正在构建一个存储库方法,在允许删除组之前,查看是否将fos_group
分配给了任何fos_user
。基本上,这是我试图使用DQL:进行的原始查询
SELECT
COUNT(*)
FROM
fos_user u
LEFT JOIN fos_user_user_group fug ON (fug.user_id = u.id)
WHERE
fug.group_id = :group_id
这就是我如何设置Users
和Groups
:之间的关系
/**
* @ORM'ManyToMany(targetEntity="Group")
* @ORM'JoinTable(name="fos_user_user_group",
* joinColumns={@ORM'JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM'JoinColumn(name="group_id", referencedColumnName="id")}
* )
*/
protected $groups;
这就是我迄今为止所做的:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb
->select('COUNT(gr.id)')
->from("UserBundle:Group", "gr");
return $qb->getQuery()->getSingleScalarResult();
但我被卡住了,因为我不知道如何添加带有未映射表/实体(fos_user_user_group
)的join
句子,有人能给我推一下吗?
您已经将您的属性映射到了那里,您正在以正确的方式加入用户实体中的属性$groups
,它将加入您的连接表fos_user_user_group
,并使用Whatever-You-where子句
$qb
->select('COUNT(g.id)')
->from('UserBundle:User', 'u')
->join('u.groups g')
->where('g.id = :val')
->setParameter('val',$your_group_id);