Ответ 1
- Вы можете заказать в поле результата SUM, перечислив его в запросе с помощью результата сглаживания с помощью
AS
. - Если вы хотите использовать агрегатную функцию, такую как
MIN()
,MAX()
,AVG()
, вы должны использоватьGROUP BY
.
Попробуйте это, что отлично работает для меня (BTW вместо ассоциативного массива в методе select
):
$q = $this->em()->createQueryBuilder();
$q->select(['product.id', 'product.title'])
->addSelect('SUM(product.price) AS HIDDEN stat_sum_realised')
->from('ModuleAdmin\Entity\ProductEntity', 'product')
->groupBy('product.id');
$q->orderBy('stat_sum_realised', 'DESC');
Подробные сведения об агрегированных функциях приведены здесь (для e.x. для MySQL): http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html
Как и в Doctrine ORM 2.3, вы также можете использовать ключевое слово HIDDEN
, которое позволит избежать (в данном случае) stat_sum_realised
от увлажнения в вашем наборе результатов.