Подтвердить что ты не робот

Doctrine query builder ~ datetime

Я пытаюсь создать простой чат в symfony2/doctrine 2.

Для тестирования я проверяю новые сообщения каждые 5 секунд, поэтому в своем запросе я пытаюсь получить все сообщения, получая все сообщения с датой и временем больше текущего минус 5 секунд.

Я пытаюсь сделать это следующим образом, но он возвращает все сообщения в базе данных вместо тех, которые были опубликованы за последние 5 секунд.

$em = $this->getDoctrine()->getManager();

$qb = $em->createQueryBuilder();
$qb->select('m')
                 ->from('ChatboxBundle:ChatMessage', 'm')
                 ->where(':new > :last')
                 ->setParameter('new', 'm.postdate' )
                 ->setParameter('last', new \DateTime('-5 second'), \Doctrine\DBAL\Types\Type::DATETIME);
$updatedata = $qb->getQuery()->getResult();

Есть идеи, что я делаю не так?

4b9b3361

Ответ 1

m.postdate - это имя поля и поэтому не должно передаваться в качестве параметра. Попробуйте это

$qb = $em->createQueryBuilder();
$qb->select('m')
                 ->from('ChatboxBundle:ChatMessage', 'm')
                 ->where('m.postdate > :last')
                 ->setParameter('last', new \DateTime('-5 second'), \Doctrine\DBAL\Types\Type::DATETIME);
$updatedata = $qb->getQuery()->getResult();