В моем репозитории Symfony2 я хотел бы получить объекты из таблицы расписания, которые были запущены, но еще не завершены. Интервал внутри объектов должен рассматриваться как «незавершенный», его следует передавать как переменную.
Используя простой SQL, это работает так:
SELECT * FROM slots rbs
WHERE rbs.rundate = '2012-08-13'
AND rbs.runtime <= '11:05:00'
AND '11:05:00' <= rbs.runtime + interval '300 seconds'
ORDER BY rbs.rundate DESC, rbs.runtime DESC
Могу ли я добиться того же с помощью DQL / Query Builder?
Вот что у меня есть на данный момент:
$qb = $this->createQueryBuilder('rbs');
$qb->where(
$qb->expr()->andX(
$qb->expr()->eq('rbs.rundate', ':date'),
$qb->expr()->lte('rbs.runtime', ':time'),
'rbs.runtime + interval 300 seconds >= :time'
)
)
->orderBy('rbs.rundate', 'DESC')
->addOrderBy('rbs.runtime', 'DESC')
->setParameter('date', date('Y-m-d'))
->setParameter('time', date('H:i:s'))
Но это возвращает следующую ошибку:
[Doctrine\ORM\Query\QueryException]
[Syntax Error] line 0, col 139: Error: Expected =, <, <=, <>, >, >=, !=, got '300'
Я обнаружил, что 'interval' не поддерживается Doctrine2 / DQL, который также упоминается здесь.
Любые предложения о том, как сделать это с помощью Doctrine2 Query Builder или DQL (и передачи интервала как переменной)?