如何在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 的宝贵时间,希望这对某人有所帮助
嗨, 我想获取用户创建的文章数量,该查询一直有效,直到我添加了一些按 "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 的宝贵时间,希望这对某人有所帮助