比较子查询与标量

问题描述 投票:0回答:1

我正在使用stmfony 4.3,但我的DQL查询中有问题。

我的查询的目的是选择用户的电子邮件,对此我的DQL查询如何具有权限列表:

        $qb = $this->createQueryBuilder('u')
        ->select('u.email,u.id')
        ->leftJoin('u.profile', 'profile')
        ->leftJoin('u.country', 'country')
        ->leftJoin('profile.privileges', 'pri')
        ->leftJoin('pri.ressource', 'resource')
        $checkRightQuery = $this->em->createQueryBuilder()
            ->select('count(rc)')
            ->from(Ressource::class, 'rc')
            ->leftJoin('rc.privileges', 'privil')
            ->leftJoin('privil.profile', 'prof')
            ->leftJoin('prof.user', 'user')
            ->where( $this->em->getExpressionBuilder()->in('rc.actionFront', ':rights'))
            ->andWhere('user.id =u.id');
        $qb->andWhere(
            $this->em->getExpressionBuilder()->eq(count($rights),
                $checkRightQuery
            )
        );

    $qb->setParameters(['rights' => $rights]);

问题是,当我获得计数结果时,它不是标量,并且无法将其与缩放器进行比较。

请任何帮助

symfony doctrine-orm doctrine dql
1个回答
0
投票

尝试根据条件在子查询中使用括号

$qb->andWhere(
        $this->em->getExpressionBuilder()->eq(count($rights),
            '(' . $checkRightQuery . ')'
        )
    );

参考

Doctrine return error with “eq”, no with “in”

© www.soinside.com 2019 - 2024. All rights reserved.