2014-03-05 1 views
1

이 코드를 사용합니다;

public function findConversation($users) 
    { 
     $qb = $this->createQueryBuilder("c"); 
     $qb->leftJoin('c.users','u') 
      ->andWhere($qb->expr()->in('u', $users)) 
      ->getQuery() 
      ->getSingleResult(); 
    } 

하지만 $ qb-> expr 메서드는 오류를 발생시킵니다.

ContextErrorException: Catchable Fatal Error: Object of class bla bla converted to string in C:\xampp\htdocs\Symfony\vendor\doctrine\orm\lib\Doctrine\ORM\Query\Expr.php line 618

어디에서 조건을 배열과 함께 사용하면 더 쉽게 할 수 있습니까?

답변

0

사용자 ID 배열을 매개 변수로 사용해야합니다.

코드 :

$qb->expr()->in('u', array_map(function($user) { return $user->getId(); }, $users)) 
0

가 여기 내 솔루션입니다.

코드 :

$qb = $this->_em->createQueryBuilder(); 

$notInUsers = $qb->select('u.id') 
    ->from('Group', 'g') 
    ->innerJoin('g.user', 'u') 
    ->getQuery() 
    ->getResult(Query::HYDRATE_ARRAY); 

$qb = $this->_em->createQueryBuilder(); 
$users = $qb->select('u') 
     ->from('User', 'u') 
     ->where($qb->expr()->notIn('u.id', array_map(function($notInUsers) { return $notInUsers['id']; }, $notInUsers))) 
     ->getQuery() 
     ->getResult(Query::HYDRATE_ARRAY);