如何在DQL中设置嵌套查询参数

How to set parameters in nested query in DQL

, 我想获取用户创建的文章数量,该查询一直有效,直到我添加了一些按 "fromDate" 和 "toDate" 日期过滤查询的参数,这是我的查询:

// 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');

我不断收到此错误:Invalid parameter number: number of bound variables does not match number of tokens. 我尝试在学说文档中搜索如何在嵌套查询中设置参数,但没有找到任何内容。首先我需要知道是否可以这样做,然后找出错误的来源,请帮忙!

使用setParameters()代替setParameter()

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

所以在执行了一些测试之后,我发现查询按原来的方式运行良好并且问题不存在。 我正在使用 KnpPaginatorBundle 对我的查询进行分页,问题似乎在于它无法对复杂查询进行分页,例如在嵌套查询中传递多个参数。所以我找到了解决方案。
所以这是 旧代码

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

这是新代码

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

感谢 Nisam 和 Matteo 的宝贵时间,希望这对某人有所帮助