2015-02-23 3 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

Можете ли вы PLS изучить ваши мысли! –

ответ

1

Вы можете использовать QueryBuilder вместо DQL

$qb = $qb->select('d'); 
if($name !== null) { 
    $qb = $qb->where('d.name = :name')->setParameter(...); 
} 
... 
$qb->getQuery()->getResult(); 
Смежные вопросы