2017-09-06 3 views
1

Ist es möglich, IF-Anweisung in Doktrin-Abfrage-Generator einzufügen? Zum Beispiel: Ich habe User und Group Entitäten mit OneToMany-Beziehung. Gruppe hat ein boolesches Feld hidden. So erstellen Sie Abfrage-Generator, der Gruppen auswählen würde, die hidden = false sind, wenn Group Besitzer nicht aktueller Benutzer ist. So kann nur Gruppenbesitzer versteckte = wahre Gruppen sehen. und andere Benutzer können nur versteckt = false GruppenSymfony-Doktrin if-Anweisung in Querybuilder

$qb = $this->createQueryBuilder('group') 
     ->where('group.owner = :userId') 
     ->setParameter('userId', $user->getId()) 
     ->orderBy('group.created', 'DESC'); 

Antwort

3

sehen Dies sollte Ihren Bedürfnissen passen

$qb = $this->createQueryBuilder('group'); 

$qb 
    ->where(
     $qb->expr()->andX(
     $qb->expr()->eq('group.owner', ':userId'), 
     $qb->expr()->eq('group.hidden', true) 
    ) 
    ) 
    ->orWhere($qb->expr()->eq('group.hidden', false)) 
    ->setParameter('userId', $user->getId()) 
    ->orderBy('group.created', 'DESC'); 

Der erste Teil der Abfrage eine Reihe halten wird nur dann, wenn aktuelle Benutzer ist der Eigentümer und die Gruppe ist versteckt.

Der zweite Teil enthält alle nicht ausgeblendeten Gruppen.