2017-12-09 1 views
1

Ich habe eine Reihe von IDs (idExam)Benutzerdefinierte Repository Symfony

Und ich möchte eine benutzerdefinierte respository machen, die auf dem, wo es alle IDs hinzufügen.

Dieser dies mein Code:

public function examNotValidated($idExam) 
{ 
    return $this->createQueryBuilder('q') 
     ->where('q.creadetby = :creadetby and q.id = :idExam') 
     ->setParameter('creadetby', false) 
     ->setParameter('idExam', $idExam) 
     ->getQuery() 
     ->getResult(); 
} 

Und ich würde so etwas wie dies mag:

public function examNotValidated($idExam) 
{ 
    return $this->createQueryBuilder('q') 
     ->where('q.creadetby = :creadetby and (q.id = :idExams[0] or q.id = :idExams[1] or q.id = :idExams[3])') 
     ->setParameter('creadetby', false) 
     ->setParameter('idExams', $idExams) 
     ->getQuery() 
     ->getResult(); 
} 

Gibt es trotzdem, das zu tun?

Antwort

2

können Sie IN Ausdruck verwenden:

public function examNotValidated(array $ids) 
{ 
    $qb = $this->createQueryBuilder('q'); 
    return $qb->where('q.creadetby = :creadetby') 
     ->andWhere($qb->expr()->in('q.id', $ids)) 
     ->setParameter('creadetby', false) 
     ->getQuery() 
     ->getResult(); 
} 

Hier wird die entgegengesetzte Logik (zB: q.id =: idExams [0] oder q.id =: idExams [1] oder q.id = : idExams [3])

public function examNotValidated(array $ids) 
{ 
    $qb = $this->createQueryBuilder('q'); 

    $orX = $qb->expr()->orX(); 
    foreach ($ids as $id) { 
     $orX->add('q.id = '.$id); 
    } 

    return $qb->where('q.creadetby = :creadetby') 
     ->andWhere($orX); 
     ->setParameter('creadetby', false) 
     ->getQuery() 
     ->getResult(); 
} 
Verwandte Themen