0

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

如果我有 2 列updated_at,分别是 a DATETIMElifespanINT我想查询实体的生命周期是否已过期,我可以这样做;

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,因为它需要右括号而不是加号。

4

1 回答 1

1

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

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

于 2012-05-22T15:23:13.263 回答