Doctrine Sonata admin createQuery忽略排序表达式中的表别名

Doctrine Sonata admin createQuery忽略排序表达式中的表别名,doctrine,sonata-admin,dql,Doctrine,Sonata Admin,Dql,我有两个实体:“原创新闻”和“后续新闻”。它们是一对多相关的,因此一条原创新闻可以有多条后续新闻 在我的OriginNewsAdmin中,我只想在listview中显示OriginNews,还想按FollowUpNews排序(如果已连接)。。。因此,我决定通过如下更改createQueryMethod来操作我的listView数据 /** * @param string $context * @return ProxyQueryInterface */ public function c

我有两个实体:“原创新闻”和“后续新闻”。它们是一对多相关的,因此一条原创新闻可以有多条后续新闻

在我的OriginNewsAdmin中,我只想在listview中显示OriginNews,还想按FollowUpNews排序(如果已连接)。。。因此,我决定通过如下更改createQueryMethod来操作我的listView数据

 /**
 * @param string $context
 * @return ProxyQueryInterface
 */
public function createQuery($context = 'list')
{
    $query = parent::createQuery($context);

    $query->leftJoin('o.followUpNews', 'fun')
        ->addSelect('COALESCE(fun.importDate, o.importDate) AS HIDDEN sortDate')
        ->addOrderBy('sortDate');

    return $query;
}
这应该加入后续新闻到原始新闻,并按导入日期排序。。。当我运行这个时,我会得到错误

在呈现模板期间引发了异常 (“[Semantic Error]第0行,第94列靠近'sortDate ASC':错误: “sortDate”未定义。“)

奏鸣曲管理员在开玩笑吗?我在上面一行定义了sortDate字段。。。即使我删除了“隐藏”关键字。。。没有变化! 问题在哪里

我的目标是,总是把最新的后续新闻放在最上面。。。这在另一方面可能吗


感谢大家花了几个小时来搜索我的问题,我发现这是一个简单的理论错误,已经存在了好几年了

我遇到了和这里描述的相同的问题

我还解决了将sql模式设置为null的问题。我还安装了条令扩展,以便在ORDERBY子句中使用IFNULL函数

我的sql现在看起来如下所示

$query->leftJoin('o.followUpNews', 'fun')
    ->addOrderBy(IFNULL('fun.importDate', 'o.importDate'), 'DESC');
这对我很有用