Php 中间表未映射实体时联接DQL
我正在构建一个存储库方法,以查看在允许删除组之前,Php 中间表未映射实体时联接DQL,php,symfony,doctrine-orm,fosuserbundle,dql,Php,Symfony,Doctrine Orm,Fosuserbundle,Dql,我正在构建一个存储库方法,以查看在允许删除组之前,fos\u组是否已分配给任何fos\u用户。基本上,这是我尝试使用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 这就是我如何设置用户和组之间的关系: /** * @ORM\ManyToMany(targ
fos\u组
是否已分配给任何fos\u用户。基本上,这是我尝试使用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
这就是我如何设置用户
和组
之间的关系:
/**
* @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\u user\u user\u group
)添加join
语句,有人能推我一下吗?你已经把你的财产映射到那里了,你用正确的方法只要在用户实体中加入财产$groups
,它就会加入你的连接表fos\u user\u user\u group
和use when You where子句
$qb
->select('COUNT(g.id)')
->from('UserBundle:User', 'u')
->join('u.groups g')
->where('g.id = :val')
->setParameter('val',$your_group_id);