Doctrine orderBy sur le champ SUM () avec alias
Je suis en train de faire une simple requête dans la doctrine, mais de la difficulté.
$query->select(array(
'app_title' => 'u.title',
'user_name' => 'u.user_name',
'first_used' => 'MIN(u.creation_time)',
'last_used' => 'MAX(u.stop_time)',
'total_usage' => 'SUM(u.stream_seconds)',
))
->from(self::USAGE_TABLE, 'u')
->orderBy('total_usage', 'DESC');
J'ai évidemment une erreur sur le nom de la colonne n'étant pas connus parce que la Doctrine est en utilisant ses propres alias (sclr4).
Cependant, si j'essaie de l'ordre par la valeur réelle; SUM(u.stream_seconds), puis-je obtenir inattendu de support dans la clause order by, je suis sûr que SQL ne supporte pas cela.
Donc, j'essaye simplement de mettre les données dans un tableau et de gérer le tri des colonnes. Cela semble si simple, comment puis-je le faire? Des idées?
source d'informationauteur YorkshireDeveloper
Vous devez vous connecter pour publier un commentaire.
AS
.MIN()
MAX()
AVG()
vous devez utiliserGROUP BY
.Essayer simmilar à ce, qui fonctionne parfaitement pour moi (d'ailleurs au lieu de tableau associatif dans
select
méthode):Les fonctions d'agrégation sont détaillées ici (pour l'e.x. pour MySQL):
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
Comme de la Doctrine ORM 2.3, vous pouvez également utiliser le
HIDDEN
mot-clé, qui permettra d'éviter (dans ce cas)stat_sum_realised
de se hydraté dans votre jeu de résultats.