在我的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
Run Code Online (Sandbox Code Playgroud)
我可以使用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'))
Run Code Online (Sandbox Code Playgroud)
但是这会返回以下错误:
[Doctrine\ORM\Query\QueryException]
[Syntax Error] line 0, col 139: Error: Expected =, <, <=, <>, >, >=, !=, got '300'
Run Code Online (Sandbox Code Playgroud)
我发现Doctrine2/DQL 不支持'interval',这也在 …
我尝试使用学说 1.2 进行此查询:
$q->where('date > ?',
new Doctrine_Expression('DATE_SUB(CURDATE() , INTERVAL 7 DAY)'));
Run Code Online (Sandbox Code Playgroud)
但它没有给我任何结果。
任何的想法 ?
谢谢
我正在尝试选择在当月开始和当天之间添加到数据库的记录 - 我或多或少知道如何从当天和特定时间段内获取记录 - 但我该怎么做得到它所以它从当前日历月的开始?
php ×2
dateadd ×1
datepart ×1
doctrine-1.2 ×1
doctrine-orm ×1
mysql ×1
postgresql ×1
select ×1
symfony ×1