php - 原则 2 DQL - 在 QueryBuilder 中嵌套表达式和函数

标签 php mysql doctrine-orm dql query-builder

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

如果我有两列updated_at,它是一个DATETIMElifespan,它是一个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 因为它需要右括号而不是加号。

最佳答案

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

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

关于php - 原则 2 DQL - 在 QueryBuilder 中嵌套表达式和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10704316/

相关文章:

php - mySQL 和 PHP 的最佳性能 : Lots of small queries, 还是一个大的?

php - MySQL所有变量不传递数据

zend-framework - 如何在 ZF2 中执行 INSERT INTO SELECT 查询

php - Doctrine 一对多关系

php - 你能强制 doctrine query builder 不期望 where 子句中的操作数吗?

php - 现有电子商务解决方案 VS 定制构建

php - 在 PDO 中使用绑定(bind)

mysql - 创建具有 NULL 值的复合唯一索引的首选方法

PHP 在 while 循环后回显数组值

PHP - "include"函数安全吗?