3

I have this query :

SELECT DATE_FORMAT(exp_date, "%Y-%m") AS Month, sum(exp_total) FROM export
GROUP BY DATE_FORMAT(exp_date, "%Y-%m");

I tried to convert it to Symfony doctrine like below :

$qb = $this
  ->createQueryBuilder('e')
  ->select('DATE_FORMAT(e.expDate, \'%Y-%m\'), sum(e.expTotal) total')
  ->groupBy('DATE_FORMAT(e.expDate, \'%Y-%m\')');
return $qb->getQuery()->getResult();

Using:

"beberlei/DoctrineExtensions": "^1.0"

Error: [Semantical Error] line 0, col 103 near 'DATE_FORMAT(e.expDate,': Error: Cannot group by undefined identification or result variable.

Amira Bedhiafi
  • 8,088
  • 6
  • 24
  • 60
Trung Vu
  • 491
  • 4
  • 19

1 Answers1

8

I assume you have configured the mentioned bundle and added the required configuration like

doctrine:
    orm:
        dql:
            datetime_functions:
                date_format: DoctrineExtensions\Query\Mysql\DateFormat

Now in query you can assign an alias as dateAsMonth to the result of DATE_FORMAT expression and in group by you can use this alias

return $qb =   $this->createQueryBuilder('e')
                    ->select('DATE_FORMAT(e.expDate, \'%Y-%m\') as dateAsMonth, sum(e.expTotal) total')
                    ->groupBy('dateAsMonth')
                    ->getQuery()
                    ->getResult();
M Khalid Junaid
  • 63,861
  • 10
  • 90
  • 118