2013-05-02 1 views
0

나는 querybuilder를 사용하여 쿼리를 만들었습니다. 모양은 다음과 같습니다.Doctrine 2를 사용하여 모든 객체를 검색하지 않습니다. querybuilder

//Create a Querybuilder 
     $qb = $this->_em->createQueryBuilder(); 

     //Foreach entity, check if it's a join and leftjoin it. 
     //If there's no join, make it the select 
     foreach($config['entities'] as $name => $entity) 
     { 
      //add new alias(ses) to select statement 
      $qb->addSelect($entity['alias']); 

      if(!isset($entity['join'])){ 
       $qb->from($entity['path'], $entity['alias']); 
      } else { 
       $qb->leftJoin($entity['join'], $entity['alias']); 
      } 
     } 
      ->orWhere(':test IS NULL') 
     ->setParameter('test', 'User\Entity\Address'); 

    //Make the query 
    $query = $qb->getQuery(); 

    //Return the result 
    return $query->getResult(); 

구성 파일을 사용하여 동적으로 선택한 항목을 선택했습니다. 따라서 사람들은 자신의 조인을 만들 수 있습니다. 하지만 (예를 들어) 사용자와 주소가있을 때. 주소가있는 사용자 만 표시됩니다. 주소가없는 사용자는 표시되지 않습니다. 가입하지 않으면 모든 사용자가 표시됩니다. 누군가 그것에 대해 생각해 봤어? where 절을 설정하고 다음과 같이하면 뭔가를 읽었습니다.

->orWhere(':test IS NULL') 
      ->setParameter('test', 'User\Entity\Address'); 

작동하지 않습니다. 조인을하고 주소없이 모든 사용자를 표시하려면 어떻게해야합니까?

Grtz

답변

0

내 where 절에 문제가 있습니다. "거리"(주소에서)를 좋아하고 싶어하는 "좋아"했다. 그러나 사용자가 주소를 알지 못했을 때 그는 좋아할 수 없기 때문에 전체 사용자를 표시하지 않습니다.