У меня есть объект Booking со свойством bookingStart.
/**
* @ORM\Column(type = "datetime")
*/
private $bookingStart;
Я создаю объект с именем $filledSlots, который содержит все бронирования в $bookingRepository, соответствующие данному дню.
$today = (new \DateTime())->setTime(0,0);
$filledSlots = $bookingRepository->getBookingsForDay($today);
Я создал метод для запроса таблицы Bookings:
function getBookingsForDay(\DateTime $day) {
//Build query
return $this->createQueryBuilder('b')
->andWhere('b.bookingStart = :val')
->setParameter('val', $day)
->getQuery()
->getResult();
}
Но когда я сбрасываю $filledSlots, он пуст:
ProfileController.php on line 60:
[]
У меня определенно есть по крайней мере одно бронирование в базе данных на сегодняшнюю дату. Разве запрос не корректен, чтобы найти все по текущему дню?
Мне понадобится время, так как заполненные слоты будут заполнять ежедневное расписание 12 30-минутными слотами.
Затем вам нужно использовать диапазон дат, как написал @Yoshi в своем ответе.






Я предполагаю, что сохраненный объект имеет значение даты и времени с часами/минутами и тому подобное. Таким образом, вам нужно попасть именно в это время, чтобы получить результат.
Вы можете попробовать одно или несколько из следующих действий:
запрос в формате, совместимом с базой данных, например.
->setParameter('val', $day->format('Y/m/d'))
попробуйте найти даты между определенной датой, например. ->andWhere('b.bookingStart BETWEEN :start AND :end') с указанием start как today 00:00:00 и end как today 23:59:59 (псевдозначения!)
Также вы можете проверить, как устанавливается $bookingStart. Если это просто:
$this->bookingStart = new \DateTime('now'); // or similar
у вас будет доля времени в БД.
Если вам нужно хранить только дату, без времени - лучше использовать тип
dateдля столбца, а неdatetime