Symfony2 + Doctrine:使用数组的多个 where 条件


Symfony2 + Doctrine: Multiple where conditions using array

我有一个实体,我正在尝试在其存储库中创建以下函数

function customGet(array $criteria)
{
     //WHAT I'm trying to do:
     //SELECT *
     //FROM mytable
     //LEFT JOIN anothoer table
     //WHERE criteria1 = value1 AND criteria2 = value2 ...etc
     $q = $this
        ->createQueryBuilder('u')
        ->select('u, g')
        ->leftJoin('u.theOtherTable', 'g');
        //Where here
        ->getQuery();
}

如何执行 where 子句?

    $q = $this->createQueryBuilder('u')
        ->select('u, g')
        ->leftJoin('u.theOtherTable', 'g');
    foreach ($criteria as $field => $value) {
        $q->andWhere(sprintf('u.%s = :%s', $field, $field))
          ->setParameter($field, $value);
    }
    return $q->getQuery();

如果所有实体关联都正确完成,则可以通过这种方式执行此操作

function customGet(array $criteria)
    {
         $value1 = $criteria['0'];   //Your expected value
         $value2 = $criteria['1'];   //Your expected value
     $q = $this
        ->createQueryBuilder('u')
        ->select('u, g')
        ->leftJoin('u.theOtherTable', 'g');
        ->where('criteria1 = :value1 AND criteria2 = :value2')
        ->setParameters(array('value1'=>$value1,'value2'=>$value2))
        ->getQuery();
   return $q->getResult()
}