Doctrine 2 DQL - QueryBuilder中的嵌套表达式和函数

时间:2012-05-22 14:40:51

标签: php mysql doctrine-orm dql query-builder

我发现DoctrineExtensions模块已经实现了一些有用的MySQL函数。但我认为我的问题很普遍。如何将另一个mysql表达式作为参数传递给函数?

如果我有2列updated_atDATETIMElifespanINT,我想查询实体的生命周期是否已过期,我可以做到这一点;

WHERE 0 > TIMESTAMPDIFF(SECONDS, NOW(), e.updated_at + INTERVAL e.lifespan SECOND)

在QueryBuilder中它就是这样的。

$qb->andWhere('0 > TIMESTAMPDIFF(SECONDS, CURRENT_TIMESTAMP(), e.updated_at + INTERVAL e.lifespan SECOND)');

但解析器不喜欢+ INTERVAL e.lifespan SECOND,因为它需要Close Parenthesis而不是加号。

1 个答案:

答案 0 :(得分:1)

我意识到我可以使用DoctrineExtensions模块中的DateAdd类。

TIMESTAMPDIFF(SECOND, CURRENT_TIMESTAMP(), DATEADD(e.updated_at, INTERVAL e.lifespan SECOND))