2015-02-23 63 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();