【发布时间】:2018-12-04 07:54:45
【问题描述】:
使用 Symfony 和 Doctrine,“eq”子查询出现错误:
没问题,没有错误:
public function getForums()
{
$qb = $this->createQueryBuilder('fc');
return $qb
->innerJoin('fc.versions', 'fcv')
->innerJoin('fc.versions', 'fcvl', 'WITH', $qb->expr()->in(
'fcvl.id',
$this->_em->createQueryBuilder()
->select('MAX(v.id)')
->from(ForumCategoryVersion::class, 'v')
->where('v.forumCategory = fc')
->getDQL()
))
->select('fc, fcv')
->getQuery()
->getResult();
}
将in 替换为eq:
public function getForums()
{
$qb = $this->createQueryBuilder('fc');
return $qb
->innerJoin('fc.versions', 'fcv')
->innerJoin('fc.versions', 'fcvl', 'WITH', $qb->expr()->eq(
'fcvl.id',
$this->_em->createQueryBuilder()
->select('MAX(v.id)')
->from(ForumCategoryVersion::class, 'v')
->where('v.forumCategory = fc')
->getDQL()
))
->select('fc, fcv')
->getQuery()
->getResult();
}
我有这个错误:
[语法错误] 第 0 行,第 208 列:错误:预期文字,得到 'SELECT'
【问题讨论】:
-
然后使用
in,而不是eq。你有什么问题? -
实际上,第二个想法,您可以在学说的 github 存储库上创建一个增强问题,并要求使用括号是可选的。在一种情况下得到支持而不在另一种情况下得到支持是很奇怪的。
标签: mysql symfony doctrine-orm doctrine