0

我想检索尚未完成的事件。我的问题是startTimeDateTimedurationInteger

我怎样才能做这个添加?

这段代码:

$events = $this->getRepository('Event')->createQueryBuilder('e')
               ->where('e.startTime+e.duration > CURRENT_TIMESTAMP()')
               ->getQuery();
               ->getResult();

扔给我 :

SQLSTATE[42883]: Undefined function: 7 ERROR: operator does not exist: timestamp without time zone + integer
4

1 回答 1

0

您不能将整数添加到日期。PHP/Doctrine 应该如何解释整数?天,小时,分钟,...?

MySQl 提供了一些处理 DATE 和 TIME 的函数,其中一些在 DQL 语言中可用,例如 DATE_ADD 如果您的整数是天数,这就是您所需要的!查看Doctrine 文档

如果你的整数是秒数,它没有在 DQL 中实现,所以你需要创建一个“本机 SQL 查询”并使用 MySQL 函数,如ADDTIME

如果您想为 DQL 创建一个 TIME_ADD 函数,请阅读这篇解释如何创建自己的 DQL 函数的文章!

于 2012-04-24T13:32:57.670 回答