我有以下代码,给我错误:
Message: Invalid parameter number: number of bound variables does not match number of tokens
码:
public function getCount($ids, $outcome)
{
if (!is_array($ids)) {
$ids = array($ids);
}
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->add('select', $qb->expr()->count('r.id'))
->add('from', '\My\Entity\Rating r');
if ($outcome === 'wins') {
$qb->add('where', $qb->expr()->in('r.winner', array('?1')));
}
if ($outcome === 'fails') {
$qb->add('where', $qb->expr()->in('r.loser', array('?1')));
}
$qb->setParameter(1, $ids);
$query = $qb->getQuery();
//die('q = ' . $qb);
return $query->getSingleScalarResult();
}
数据(或$ ids):
Array
(
[0] => 566
[1] => 569
[2] => 571
)
DQL结果:
q = SELECT COUNT(r.id) FROM \My\Entity\Rating r WHERE r.winner IN('?1')
在研究此问题时,我发现了一些对于遇到此问题并寻求解决方案的人来说很重要的事情。
在原始帖子中,以下代码行:
$qb->add('where', $qb->expr()->in('r.winner', array('?1')));
将命名参数包装为数组会导致绑定参数编号问题。通过将其从数组包装中移除:
$qb->add('where', $qb->expr()->in('r.winner', '?1'));
此问题应得到解决。在以前版本的Doctrine中这可能是个问题,但在最新版本的2.0中已解决。
问题内容: 我有以下查询代码: 问题是:即使存在匹配项,此查询也找不到它们。我使用此代码查看了完整的sql: 而我得到的是: (查询的最后一部分)请告诉我要更改什么? 问题答案: 您忘记了单词周围的迹象:
问题内容: 在Symfony中,当我在mysql中将以下查询与DATE函数一起使用时,出现错误 为什么会这样以及解决该情况的解决方法是什么,在数据库中,这些字段(即end_date)存储为mysql类型“ date” 问题答案: 仅了解几个标准sql函数(例如)。为了能够使用您的自定义函数,您需要注册它并告诉如何将其转换为原始sql。请遵循以下指南: Symfony文档 学说 并在这里检查我的答案
本文向大家介绍如何在C#中使用OpenCV(GOCW使用教程),包括了如何在C#中使用OpenCV(GOCW使用教程)的使用技巧和注意事项,需要的朋友参考一下 1、什么是GOCW 为了解决在Csharp下编写OpenCV程序的问题,我做过比较深入的研究,并且实现了高效可用的方法GreenOpenCsharpWrapper(GOCW)。通过这种方法,能够分离界面和算法业务,高效率完成算法
我在Symfony中创建了自己的第一个服务: 但是我得到了错误消息: 试图调用类“App\Service\PagesGenerator”中名为“getDoctrine”的未定义方法。 然后我试图在我的services.yaml中补充: 但是我得到了错误信息: 文件“/用户/工作/项目/配置/services.yaml”在 /Users/work/project/config/services.ya
我可以在Struts2中的s:property标记中使用s:text标记吗。问题是,我的操作类中有一个 映射以的形式具有键/值,实际上映射中存在的值是文件中存在的键。请参阅下面的 这是我的application.properties文件 现在,我想在我的jsp中迭代这个映射,并希望通过在application.properties文件中将映射的值作为键传递,从属性文件中获得这些值,并将它们显示为标