首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用数组参数创建查询

使用数组参数创建查询
EN

Stack Overflow用户
提问于 2012-10-19 16:49:20
回答 2查看 4.4K关注 0票数 1

我尝试执行以下查询

代码语言:javascript
复制
$em->createQuery('select i from AcmePublicBundle:Public i where i.user in (:opc)');
$query->setParameter('opc', $opc);

where :opc is an array like this
$opc={array}[2]
  0 = {array}[1]
     id = "9"
  1 = {array}[1] 
     id = "10" 

我得到了这个错误

代码语言:javascript
复制
Notice: Undefined offset: 0 in...

如果我尝试这样做

代码语言:javascript
复制
$em->createQuery('select i from AcmePublicBundle:Public i where i.usuario in (9, 10)');

百事大吉。但我必须通过$opc

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-19 17:17:20

是的,错误似乎很合适,因为setParameter同时考虑了array键和值,而键代表字段名。因此,您不能在这里使用矩阵。

代码语言:javascript
复制
$ids = array();
foreach ( $opc as $o ){
    $ids[] = (int)$o[1]; //be careful about data type (string, int etc)
}
$q = " .... WHERE id IN (:opc) ... ";
$q->setParameter('opc', $ids);

这应该行得通..。

票数 1
EN

Stack Overflow用户

发布于 2012-10-19 17:17:28

您的$opc数组不应是多维的。尝试像这样传递一个数组:

代码语言:javascript
复制
$opc=array(
  '9',
  '10'
);

而不是

代码语言:javascript
复制
$opc=array(
  array('id'=>'9'),
  array('id'=>'10')
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12970584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档