2012-08-15 88 views
2

我有這個疑問我怎麼可以把條件學說查詢生成器

$qb->select('u') 
      ->from('UserBundle:User', 'u') 
      ->where('u.location = :identifier') 
      ->orderBy('u.firstName', 'ASC') 
      ->setParameter('identifier', 2); 

我想,如果$標識符存在,那麼它應該否則過濾結果我得到的所有結果就像

$qb->select('u') 
       ->from('UserBundle:User', 'u') 
         if($identifier)    
         ->where('u.location = :identifier') 
       ->orderBy('u.firstName', 'ASC') 
         if($identifier) 
       ->setParameter('identifier', 2); 

是否可能

回答

6

這是可能的,你只需要重構你的代碼。

$qb->select('u') 
      ->from('UserBundle:User', 'u') 
      ->orderBy('u.firstName', 'ASC'); 
if($identifier) { 
     $qb->where('u.location = :identifier') 
      ->setParameter('identifier', 2); 
} 
+0

是不是應該來到底排序依據,也可以來之前where子句 – user825904 2012-08-15 11:09:00

+0

這是查詢生成器之美:到'getQuery()'被調用,您可以修改任意順序查詢你喜歡。 – chiborg 2012-08-15 11:29:58

+0

感謝哥們,那太棒了 – user825904 2012-08-16 00:14:54