4

我有以下 DQL(Doctrine1.2):

$dql->select('sum(t.column1) column1, t.column2')
    ->from('Table t')
    ->groupBy('t.column2')
    ->orderBy('column1');

但生成的 SQL 与以下 DQL 相同:

$dql->select('sum(t.column1) column1, t.column2')
    ->from('Table t')
    ->groupBy('t.column2')
    ->orderBy('t.column1'); //Ordered by column1 not by sum(t.column1)

是否可以强制 Doctrine 使用别名column1而不是列名t.column1

我需要这个,因为我想从模型中为两个非常相似的 DQL 提供相同的输出格式。(最近由相同的模板呈现)。另一个 DQL 如下所示:

$dql->select('t.column1, t.column2')
    ->from('Table t')
    ->orderBy('t.column1');

可能的解决方法是选择sum(t.column1)两次。第一次使用别名column1,第二次使用其他别名,为什么在 passwd 到orderBy函数之后,但它看起来不是最清晰的解决方案。

有什么建议么?

谢谢

4

1 回答 1

6

你能试试这个方法吗?只需将“sum(t.column1)”按顺序排列,而不是尝试使用别名:

$dql->select('sum(t.column1) as column1, t.column2')
    ->from('Table t')
    ->groupBy('t.column2')
    ->orderBy('sum(t.column1)');
于 2011-01-12T14:41:21.723 回答