Symfony - Выберите объект, где дата = сегодня

0

У меня есть репозиторий объектов, содержащий код

$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. Дата в БД существует. Какого черта?

  • 0
    Попробуйте изменить type = "date" на type = "datetime"
  • 0
    Я не могу Мне нужно только свидание. Когда я поменяю тип на datetime, мне нужно будет получить Today, используя BETWEEN в запросе. В моем случае я просто ищу дату, существующую в БД.
Теги:
select
date
where

1 ответ

3
Лучший ответ

Поскольку 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

  • 0
    Твой ответ был прав. Я проверил эту опцию ранее, используя дату ('Ymd') вместо DateTime, но я не видел другой проблемы - у моей сущности был Date как Id, и это было проблемой, Doctrine не удалось преобразовать DT в строку, чтобы получить как Я бы. Я добавил стандартный член $ Id, и все работает как шарм. СПАСИБО!
  • 0
    Нет проблем, рад, что вы решили.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню