使用MIN和MAX时,Doctrine Subquery未定义类

时间:2016-06-17 08:03:04

标签: symfony doctrine-orm

我正在创建一个查询,用于标识给定ID的上一个和后一个记录。我有以下代码:

@(Html.Kendo().Grid<...>()
  .Columns(columns =>
  {
    columns.Bound(j => j.Type);
    columns.Bound(j => j.Code);
  })
  .Sortable(s => s.Enabled(true))
  .DataSource(dataSource => dataSource
    .Ajax()
    .PageSize(20)
    .Sort(p => { p.Add("Code").Ascending(); p.Add("Type").Ascending(); })
    .Model(model => model.Id(j => j.ID))
    .Read(...)
    .ServerOperation(true)
  )
)

但是上面的代码会抛出错误说:

  

[语义错误]第0行,第138行附近&#39;,(SELECT MAX(t2.id)&#39;:错误:类&#39;,&#39;未定义。

为什么会这样?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为您的问题是使用minmax作为别名。我使用它时遇到了同样的错误,但更改别名工作正常。我想你也可以将你的逻辑简化为一个queryBuilder

    $queryBuilder = $this->createQueryBuilder('story');

    $queryBuilder
        ->select('MAX(story.id) AS max_id')
        ->addSelect('MIN(story.id) AS min_id')
        ->where('story.id > :id')
        ->setParameter('id', 1);

    return $queryBuilder->getQuery()->getScalarResult();

返回:

[
  {
    "max_id": "17",
    "min_id": "16"
  }
]