Как сравнить две даты в построителе запросов

Я пытаюсь создать форму поиска, и мне нужно сравнить выбранную дату с другими датами в базе данных. Выбранная дата имеет этот формат (Дд / мм / год) и даты, сохраненные в базе данных, имеют этот формат (Мм-дд-ууу)

$qb = $this->createQueryBuilder('t')
->leftJoin('t.image', 'i')->addSelect('i')
->leftJoin('t.country', 'country')->addSelect('country')
->leftJoin('t.destination', 'destination')->addSelect('destination')
->leftJoin('t.airport', 'airport')->addSelect('airport')
->Where('t.agence = :agence')
->setParameter('agence', $agence);
//.........

if (!empty($departureDate)) {
$qb->andWhere('t.departureDate <= :departureDate')
->setParameter('departureDate', new \Datetime($departureDate));
}
return $qb;

этот запрос покажет мне эту ошибку, если выбранный день верхний из 13

DateTime::__construct() [<a href='datetime.--construct'>datetime.--construct</a>]: Failed
to parse time string (13/02/2015) at position 0 (1): Unexpected character

и если это меньше 13 , запрос не дает мне правильных результатов

1

Решение

У вас неверная конфигурация интернационализации: ваша дата является парсером как mm/dd/yyyy, Вам нужно изменить это поведение:

$departureDate = new \DateTime::createFromFormat('dd/mm/YY', $departureDate)
0

Другие решения

Проверь это
$departureDate = new \DateTime::createFromFormat('d/m/Y', $departureDate)->format('m-d-Y');

0

Я решил это, установив запрос следующим образом:

if (!empty($departureDate)) {
$date = new \DateTime;
$qb->andWhere('t.departureDate <= :departureDate')
->setParameter('departureDate', $date->createFromFormat('d/m/Y',$departureDate));
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector