2017-09-06 20 views
1

doctrine query builderにIF文を挿入することはできますか?たとえば、私はUserGroupのOneToMany関係を持つエンティティを持っています。グループにはブール値フィールドhiddenがあります。 hidden = falseの場合、グループを選択するクエリビルダを作成する方法Group所有者が現在のユーザーではない。グループの所有者だけがhidden = trueグループを見ることができます。他のユーザーが隠さ= falseのグループsymfony Doctrine if querybuilderのif文

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

答えて

3

をのみ見ることができます。これは、あなたのニーズに合わせなければならない、クエリの

$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'); 

最初の部分は、現在のユーザーが所有者とグループが隠されている場合にのみ、行を維持します。

2番目の部分には非表示のグループがすべて含まれます。