createQueryBuilder IN子句

时间:2011-10-26 09:24:12

标签: sql symfony doctrine-orm dql

我正在使用Symfony2,我需要执行此SQL,例如:

      select detformacion.* from detformacion
        left  join formacion
        on detformacion.formacion_id = formacion.id
        left join detcurso
        on formacion.id = detcurso.formacion_id
        where detcurso.id IN ('143','144');

为此,我在我的存储库中有这个:

  

公共函数getSeleccion(){

    $em = $this->getEntityManager();

    $query = $em->createQueryBuilder()
                ->select('d')
            ->from('GitekUdaBundle:Detformacion', 'd')
            ->leftJoin('d.formacion', 'f') 
                ->leftJoin('f.detcursos', 'det')
                ->where('det.id = :miarray')
                ->setParameter('miarray',array('143','144'))
            ->getQuery() 
            ;
      return $query->getResult();
    }

我尝试使用 - > where('det.id IN:miarray'),但我一直都会遇到错误。

任何帮助或线索?

提前感谢。

更新:问题是设置参数。

1 个答案:

答案 0 :(得分:18)

IN运算符后缺少括号:

->where('det.id IN (:miarray)')
->setParameter('miarray', array('143','144'))