Sonata admin createQuery忽略sort表达式中的表别名

时间:2018-04-18 15:10:44

标签: doctrine sonata-admin dql

我有两个实体:“OriginNews”和“FollowUpNews”。它们与一对多有关,因此一个OriginNews可以有多个FollowUpNews。

在我的OriginNewsAdmin中,我只想在listview中显示OriginNews,但也想通过FollowUpNews排序(如果已连接)......所以我决定通过改变这样的createQueryMethod来操纵我的listView数据。

elements = [...]
weights = [...]

for(...):
    element = sample(elements, weights)
    *Some calculation with element and changing the values of weights*

这应该将followUpNews加入到originNews并按importdate排序...当我运行它时,生病得到错误。

  

在渲染模板期间抛出了异常   (“[语义错误]第0行,第94行'sortDate ASC':'错误:   'sortDate'未定义。“)。

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

我的目标是,始终拥有最新的FollowUpNews的OriginNews ......可能是另一种方式吗?

由于

1 个答案:

答案 0 :(得分:0)

我发现问题的小时数,我发现这很简单,这是几年来存在的一个学说错误......

我遇到了与此处描述的相同的问题

Doctrine Querybuilder ORDER BY clause is not in SELECT list

我还将sql模式设置为null,从而解决了这个问题。我还安装了doctrine扩展来按顺序使用IFNULL函数。

我的sql现在看起来像跟随

$query->leftJoin('o.followUpNews', 'fun')
    ->addOrderBy(IFNULL('fun.importDate', 'o.importDate'), 'DESC');

这适合我。