Doctrine Query Builder 使用数组
Posted
技术标签:
【中文标题】Doctrine Query Builder 使用数组【英文标题】:Doctrine Query Builder using Array 【发布时间】:2012-07-19 06:38:34 【问题描述】:我有一个 id 数组:
Id_array; //array(2) [0]=> int(9) [1]=> int(10)
我只想使用 Id_array 选择用户; 当我没有数组而只有一个整数时,我设法做到了:
$query = $em->createQuery('SELECT u FROM Users u WHERE u.id = ?1');
$query->setParameter(1, 9); // I tested the value 9 here
$users = $query->getResult();
如何获取Id_array对应的所有用户?
【问题讨论】:
【参考方案1】:或者没有查询生成器:
$query = $em->createQuery('SELECT u FROM Users u WHERE u.id IN (:id)');
$query->setParameter('id', array(1, 9));
$users = $query->getResult();
【讨论】:
【参考方案2】:如果有人遇到类似的情况,我使用查询生成器,关键是使用 IN 语句。
//...
$qb = $this->createQueryBuilder('u');
$qb->add('where', $qb->expr()->in('u.id', ':my_array'))
->setParameter('my_array', $Id_array);
【讨论】:
您的解决方案效果最好,因为它也处理字符串,接受的答案仅适用于整数 以上对我不起作用。我不得不做setParameter('my_array', $Id_array, Connection::PARAM_INT_ARRAY)
。可能是因为我使用的是 DBAL 查询生成器,而不是 ORM。【参考方案3】:
从 2.1 或 2.2 开始,存储库现在就实现了关于学说 2
findBy(array('id' => array(1, 2, 3, 4, 5));
【讨论】:
正是我想要的!谢谢!以上是关于Doctrine Query Builder 使用数组的主要内容,如果未能解决你的问题,请参考以下文章
Doctrine Query Builder,“between”表达式和子查询
Doctrine DBAL 可以与 ORM Query Builder 混合使用吗?
Doctrine Query builder,计算相关的一对多行
Doctrine Query Builder Select Count with Case