Ayuda en DQL, Group by Month(fecha)

494 views
Skip to first unread message

mloyola

unread,
Aug 22, 2012, 10:53:56 PM8/22/12
to symfo...@googlegroups.com

Compañeros:

Necesito que me ayuden con este inconveniente en DQL.

Necesito convertir este query SQL a DQL.

SELECT MONTH(fecha) as mes, COUNT(*)  as visitas FROM visitascard WHERE YEAR(fecha)='2012' GROUP BY MONTH(fecha)

$query = $em->createQuery(‘SELECT MONTH(fecha) as mes, COUNT(*)  as visitas FROM visitascard WHERE YEAR(fecha)='2012' GROUP BY MONTH(fecha)');

        $datos = $query->getResult();

He buscado como utilizar o el equivalente de la function MONTH de SQL en DQL, pero no he tenido éxito.

Saludos

Listero Absoluto

unread,
Aug 23, 2012, 8:52:09 AM8/23/12
to symfo...@googlegroups.com
Tenes que usar extensiones de doctrine, hay un bundle para eso
(DoctrineExtensions). Y luego importarlas antes de usarlas.

$emConfig = $this->getEntityManager()->getConfiguration();
$emConfig->addCustomDatetimeFunction('YEAR',
'DoctrineExtensions\Query\Mysql\Year');
$emConfig->addCustomDatetimeFunction('MONTH',
'DoctrineExtensions\Query\Mysql\Month');

El día 22 de agosto de 2012 23:53, mloyola
<mlo...@mbcomunicacionessac.com> escribió:
> --
> Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de
> Google Groups.
> Para publicar en este grupo, envía un email a symfo...@googlegroups.com
> Para darte de baja, envía un email a symfony-es+...@googlegroups.com
> El resto de opciones puedes encontrarlas en
> http://groups.google.com/group/symfony-es?hl=es



--
Saludos y gracias.

mloyola

unread,
Aug 23, 2012, 3:22:29 PM8/23/12
to symfony-es
Hola Comprañero:

Gracias por tu pronta respuesta.

te comento que tambien hcie la prueba con DoctrineExtensions:

$em_config = $em->getConfiguration();
$em_config-
>addCustomDatetimeFunction('MONTH','DoctrineExtensions\Query\Mysql
\Month');
$em_config-
>addCustomDatetimeFunction('YEAR','DoctrineExtensions\Query\Mysql
\Year');

Si ejecuto este codigo, si funcion al function MONTH:

$query = $em->createQuery('SELECT MONTH(a.fecha) AS mes FROM
MovibidiBundle:Visitascard a GROUP BY a.fecha');
$datos = $query->getResult();

Pero cuando agrego la function MONTH como parte del GROUP BY, no
funciona:

$query = $em->createQuery('SELECT MONTH(a.fecha) AS mes FROM
MovibidiBundle:Visitascard a GROUP BY MONTH(a.fecha)');
$datos = $query->getResult();

Estoy investigando a que se debe que GROUP BY MONTH(a.fecha) no
funciona, habiendo instalado y declarado DoctrineExtensions.

SI alguien ya ha tenido este inconveniente y lo ha resuelto, que me
ayude.

Saludos




On 23 ago, 07:52, Listero Absoluto <listeroabsol...@gmail.com> wrote:
> Tenes que usar extensiones de doctrine, hay un bundle para eso
> (DoctrineExtensions). Y luego importarlas antes de usarlas.
>
> $emConfig = $this->getEntityManager()->getConfiguration();
> $emConfig->addCustomDatetimeFunction('YEAR',
> 'DoctrineExtensions\Query\Mysql\Year');
> $emConfig->addCustomDatetimeFunction('MONTH',
> 'DoctrineExtensions\Query\Mysql\Month');
>
> El día 22 de agosto de 2012 23:53, mloyola
> <mloy...@mbcomunicacionessac.com> escribió:

wilx

unread,
Aug 24, 2012, 7:10:45 PM8/24/12
to symfo...@googlegroups.com
Hola.

Ese query no lo realizado pero si he ejecutado select recursivos en postgres introduciendolos a un native query[*] de doctrine, imajino que si no tenes el homologo de esa funcion SQL en DQL, el native query es lo que necesitas.

Suerte.

[*] http://docs.doctrine-project.org/en/latest/reference/native-sql.html
Reply all
Reply to author
Forward
0 new messages