update symfony2 getrepository getdoctrine generate force entitymanagerinterface consultas symfony parameters doctrine nested subquery

symfony2 - Cómo establecer parámetros en consultas anidadas en DQL



symfony 4 doctrine (2)

Hola , me gustaría obtener la cantidad de artículos creados por un usuario, la consulta solía funcionar hasta que agregué algunos parámetros que filtraban la consulta por fechas "fromDate" y "toDate", esta es mi consulta:

// query String $dql = ''SELECT u.idUser, u.lastName, u.email, u.mobile, (SELECT AVG(n.note) FROM MyBundle:Note n WHERE n.noteFor = u.idUser) AS note, (SELECT COUNT(a) FROM MyBundle:Article a WHERE (a.createdBy = u.idUser) AND (a.createdAt BETWEEN :fromDate AND :toDate)) AS articles FROM MyBundle:User u''; // create the actual query $users= $em->createQuery($dql); // set filter date parameter $users->setParameter(''fromDate'', $fromDate.''00:00:00''); $users->setParameter(''toDate'', $toDate.''23:59:59'');

Sigo recibiendo este error: Invalid parameter number: number of bound variables does not match number of tokens. Intenté buscar en la documentación de la doctrina cómo establecer parámetros en consultas anidadas sin encontrar nada. primero necesito saber si es posible hacer eso y luego descubrir de dónde viene el error, ¡por favor ayuda!


Entonces, después de realizar algunas pruebas, descubrí que la consulta funcionaba bien y que el problema no estaba allí. Estoy usando KnpPaginatorBundle para paginar mis consultas, parece que el problema fue que no podía paginar consultas complejas como pasar múltiples parámetros en la consulta anidada. así que encontré una solución.
Este es el código anterior :

// Pagination $paginator = $this->get(''knp_paginator''); $users = $paginator->paginate($users, 1, 10);

Y este es el nuevo código :

// Pagination $paginator = $this->get(''knp_paginator''); $users = $paginator->paginate($users, 1, 10, array(''wrap-queries'' => true) );

Gracias a Nisam y Matteo por su tiempo, espero que esto ayude a alguien


Use setParameters() lugar de setParameter()

$users->setParameters(array(''fromDate''=> $fromDate.''00:00:00'',''toDate''=> $toDate.''23:59:59''))