mysql - “eq”的教义返回错误,“in”没有
问题描述
使用 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'
解决方案
您需要对子查询使用括号 ():
->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() . ')'
))
参考
推荐阅读
- libgdx - 在 LIBGDX 运行时添加 Textbutton
- json-ld - 多门课程需要 JSON-LD 结构化数据示例
- javascript - 部署时更改 Firebase 区域
- c# - C# 'object' 不包含“Split”的定义
- matlab - 我在 matlab 中有一个 3d 矩阵,我需要提取每一行来创建新矩阵
- swagger - 在 swagger micronaut 中添加示例 RequestBody
- python - 没有名为“PyQt5.sip”的模块
- listview - Swiftui List View 图片缩放效果 onload
- elasticsearch - AWS Elasticsearch _refresh 请求失败
- java - 将类转换为记录时的兼容性问题