【问题标题】:Doctrine Query Builder using ArrayDoctrine Query Builder 使用数组
【发布时间】: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对应的所有用户?

【问题讨论】:

    标签: php orm doctrine doctrine-orm


    【解决方案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));
      

      【讨论】:

      • 正是我想要的!谢谢!
      猜你喜欢
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 2013-07-04
      • 1970-01-01
      相关资源
      最近更新 更多