我发现DoctrineExtensions模块已经实现了一些有用的MySQL函数。但我认为我的问题很普遍。如何将另一个mysql表达式作为参数传递给函数?
如果我有2列updated_at
,DATETIME
和lifespan
是INT
,我想查询实体的生命周期是否已过期,我可以做到这一点;
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而不是加号。
答案 0 :(得分:1)
我意识到我可以使用DoctrineExtensions模块中的DateAdd类。
TIMESTAMPDIFF(SECOND, CURRENT_TIMESTAMP(), DATEADD(e.updated_at, INTERVAL e.lifespan SECOND))