Как использовать «интервал» в конструкторе запросов Doctrine2

В моем репозитории 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 (и передачи интервала как переменной )?

9
задан Community 23 May 2017 в 12:02
поделиться