У меня есть репозиторий объектов, содержащий код
$qb = $this->createQueryBuilder('tdd');
$qb->select('tdd')
->where($qb->expr()->eq('tdd.disable_date', ':dat'))
->setParameter('dat', new \DateTime());
return $qb->getQuery()->getOneOrNullResult();
И Entity, содержащий только один элемент (disable_date)
/**
* @ORM\Column(type="date", unique=true, nullable=false)
* @ORM\Id()
*/
private $disable_date;
Когда я пытаюсь проверить, находится ли сегодня дата в базе данных, код выше возвращает NULL. Дата в БД существует. Какого черта?
Поскольку new DateTime()
создает объект, подобный этому: object(DateTime)#1 (3) { ["date"]=> string(26) "2018-04-12 07:24:34.697668" ["timezone_type"]=> int(3) ["timezone"]=> string(10) "US/Pacific" }
И вы пытаетесь сопоставить точную дату со временем (включая seconds
и ms
). И вот почему результат равен null
Дата проверки без h:i:s