php - 带有 getDQL 的 Symfony 子查询抛出错误
问题描述
我正在尝试转换以下查询
SELECT * FROM (SELECT * FROM table_name d WHERE d.number != '' ORDER BY d.stop_time DESC ) AS p GROUP BY p.number
使用 symfony 查询构建器如下 =>
$sub = $this->entityManager->createQueryBuilder();
$sub->select('d')
->from($this->entityManager->getClassMetadata($entityClass)->getName(), 'd')
->where("d.number != ''")
->orderBy('d.time', 'DESC');
$qb = $this->entityManager->createQueryBuilder();
$qb->select('p')
->from($sub->getDQL(),'p')
->groupBy('p.number');
我得到以下错误=>
[Syntax Error] line 0, col 14: Error: Expected Doctrine\ORM\Query\Lexer::T_ALIASED_NAME, got 'SELECT'
如果有任何问题,请更正查询。
解决方案
这里是答案
$sub = $this->entityManager->createQueryBuilder();
$sub->select('d.id')
->from($this->entityManager->getClassMetadata($entityClass)->getName(), 'd')
->where("d.number != ''")
->orderBy('d.time', 'DESC');
$qb = $this->entityManager->createQueryBuilder();
$qb->select('p')
->from($this->entityManager->getClassMetadata($entityClass)->getName(), 'p')
->where("p.id IN (".$sub->getDQL().")")
->groupBy('p.number');
推荐阅读
- html - 停止移动菜单后面的文本滚动
- java - 为什么控制器显示问题而不是西里尔字符?
- google-chrome-devtools - 当返回“no-store, no-cache, must-revalidate”时,Chrome 的开发者工具会显示响应内容吗?
- android - 如何验证用户是否是 Android 应用程序上的学生
- html - css和firefox的问题
- sql-server - 始终显示计数结果为 0 的行 (1)
- apache-spark - Spark Structured Streaming 中的窗口操作
- jmeter - 随时间变化的活动线程图未更新
- java - 直接从maven部署war到appserver
- c++ - 关于使用泰勒级数计算 sin(x) 的问题