在理论中使用间隔时出错

时间:2019-04-11 04:51:18

标签: symfony symfony-4.2

当我使用以下查询(第2条原则)时,出现错误,无法在查询中使用INTERVAL,

$qb->andWhere("(pv.appointment_date + INTERVAL 48 HOUR) >= UTC_TIMESTAMP()");

错误:预期的学说\ ORM \ Query \ Lexer :: T_CLOSE_PARENTHESIS,得到了'48'“

2 个答案:

答案 0 :(得分:3)

如果要在mysql comumn字段上使用INTERVAL(在教义2,DQL中),则可以按以下方式使用

$qb->andWhere("DATE_ADD(pv.appointmentDate,48,'hour') >= UTC_TIMESTAMP()");

它将打印如下的SQL,

...... DATE_ADD(p0_.appointmentDate, INTERVAL 48 HOUR) >= UTC_TIMESTAMP() .....

答案 1 :(得分:2)

Doctrine是使用DQL的ORM,它与SQL不同。默认情况下,doctine并不支持sql中的所有功能。 DQL不附带对INTERVAL的支持。为此,您必须添加用户定义的函数DQL User Defined Functions

此git repo DoctrineExtensions

中提供了一组完整的功能

以上查询将变为DATE_ADD(pv.appointment_date, INTERVAL 48 HOUR) >= UTC_TIMESTAMP()