Доктрина: Порядок по псевдониму с тем же именем, что и столбец - PullRequest
4 голосов
/ 12 января 2011

У меня есть следующий 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, но это не похоже на самое ясное решение.

Есть предложения?

Спасибо

1 Ответ

5 голосов
/ 12 января 2011

Не могли бы вы попробовать этот подход?Просто поместите "sum (t.column1)" в порядке, вместо того, чтобы пытаться использовать псевдоним:

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