【发布时间】:2020-02-04 09:22:19
【问题描述】:
我使用的是 Symfony 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]);
问题是当我得到计数的结果时,它不是一个标量,它不能将它与标量进行比较。
有什么帮助吗?
【问题讨论】:
-
您的数据库是否抱怨它不是标量,还是教条?根据一些 SO 问题/答案,您可能必须使用
$checkRightQuery->getDql() -
学说编译它。问题是子查询返回数组如何包含一个标量值,当尝试将它与一个标量进行比较时,我有这个错误:[语法错误]第 0 行,第 675 列:错误:预期文字,得到 'SELECT'
-
尝试使用parethensis,就像这里stackoverflow.com/questions/53608128/…
-
它可以工作,谢谢你能发布它来验证
标签: symfony doctrine-orm doctrine dql