Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 中间表未映射实体时联接DQL_Php_Symfony_Doctrine Orm_Fosuserbundle_Dql - Fatal编程技术网

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);