2014-01-22 2 views
0

В принципе, я хочу, чтобы запросить, используя диапазон дат следующим образом:Doctrine Query: как запросить диапазон дат?

$qb = $this->createQueryBuilder("c"); 

if ($createDateStart) { 
     $createDateStart = $createDateStart->format('d-M-Y'); 
     $qb->where("c.createDate >= :createDateStart")->setParameter(
       "createDateStart", $createDateStart); 
} 

if ($createDateStart && $createDateEnd) { 
     $createDateEnd = $createDateEnd->format('d-M-Y'); 
     $qb->andWhere("c.createDate <= :createDateEnd")->setParameter(
       "createDateEnd", $createDateEnd); 
} else 
     if ($createDateEnd) { 
      $createDateEnd = $createDateEnd->format('d-M-Y'); 
      $qb->where("c.createDate <= :createDateEnd")->setParameter(
        "createDateEnd", $createDateEnd); 
     } 

и вот сущность для «createDate»:

/** 
* @Column(type="datetime") 
*/ 
private $createDate; 

Однако, когда я проверяю с помощью этого диапазона дат: $ createDateStart = 01-янв-2014 до $ createDateEnd = 31-янв-2014. Отображаются записи за последний год, т.е. 2013 год.

Я предполагаю, что мне также нужно форматировать $ createDate (d-M-Y), но как это сделать из инструкции запроса?

Буду признателен за вашу помощь.

+0

Вам не нужно преобразовывать свой объект datetime в строку перед тем, как использовать его в качестве параметра, являются ли ваши свойства объекта определенными как тип даты? – calumbrodie

+0

Да. Они есть. Но в чем причина этого вопроса? Правильно ли синтаксис сравнения? – EngineerCoders

ответ

Смежные вопросы