2015-02-23 57 views
0

我已經寫了我的多個搜索一個DQL查詢,做工精細,如果我指定的所有字段,但如果我保持該字段爲空的一個也不會告訴我結果搜索與學說,如果空白字段

  $query = $em->createQuery 
      ('SELECT d FROM EntityBundle:Doctor d WHERE d.name =:name AND d.degree =:degree AND d.area = :area_id AND d.sex = :sex AND 
      (

       (YEAR(d.dob) BETWEEN :d2 AND :d1) OR 
       (YEAR(d.dob) BETWEEN :e2 AND :e1) OR 
       (YEAR(d.dob) BETWEEN :f2 AND :f1) 

      )'   ) 

      ->setParameter('name', $name) 
      ->setParameter('degree', $degree) 
      ->setParameter('area_id', $area) 
      ->setParameter('sex', $sex) 
      ->setParameter('d1', $this->p1) 
      ->setParameter('d2', $this->p2) 
      ->setParameter('e1', $this->q1) 
      ->setParameter('e2', $this->q2) 
      ->setParameter('f1', $this->r1) 
      ->setParameter('f2', $this->r2) 

      ->getResult(); 

我已經試過的setParameter(? '名',(is_null($名) 「IS NULL」:$名)),但也仍然沒有運氣..

+0

你可以請探索你的想法! – 2015-02-23 06:53:13

回答

1

你可以用它代替DQL

的QueryBuilder
$qb = $qb->select('d'); 
if($name !== null) { 
    $qb = $qb->where('d.name = :name')->setParameter(...); 
} 
... 
$qb->getQuery()->getResult();