【问题标题】:Doctrine 2 DQL - nest expressions and functions in the QueryBuilderDoctrine 2 DQL - 在 QueryBuilder 中嵌套表达式和函数
【发布时间】:2012-05-22 14:40:50
【问题描述】:

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

如果我有 2 列 updated_atDATETIMElifespan 这是 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,因为它需要右括号而不是加号。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-12-04
      • 1970-01-01
      • 2014-09-06
      • 2013-08-06
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      相关资源
      最近更新 更多