具有getDQL的Symfony子查询抛出错误

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

我正在尝试转换以下查询

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'

如果有任何错误,请更正查询。

php mysql symfony symfony4 query-builder
1个回答
0
投票

这里是答案

$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');
© www.soinside.com 2019 - 2024. All rights reserved.