2017-09-06 63 views
1

是否可以在教條查詢生成器中插入IF語句?例如:我有UserGroup與OneToMany關係的實體。組具有布爾字段hidden。如何創建將選擇組的hidden的查詢構建器=如果Group所有者不是當前用戶,則爲false。這樣只有組所有者才能看到隱藏的=真實的組。和其他用戶只能看到隱藏=的虛假團體Symfony Doctrine if語句在querybuilder中

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

第一部分將只保留當前用戶是否所有者和組是隱藏的行。

第二部分將包括所有非隱藏組。