我发现DoctrineExtensions模块实现了一些有用的 MySQL 功能。但我认为我的问题是普遍问题。您如何将另一个 mysql 表达式作为参数传递给函数?
如果我有 2 列updated_at
,分别是 a 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
,因为它需要右括号而不是加号。