在学说中使用间隔时出错
Getting error while using interval in doctrine
当我使用下面的查询(Doctrine 2)时,我遇到了错误,并且不能在查询中使用 INTERVAL,
$qb->andWhere("(pv.appointment_date + INTERVAL 48 HOUR) >= UTC_TIMESTAMP()");
错误:应为 Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS,得到“48”
Doctrine 是一个使用 DQL 的 ORM,它与 SQL 不同。默认情况下,并非 sql 中的所有函数都被 doctine 支持。 DQL 不附带对 INTERVAL 的支持。为此,您必须添加用户定义的函数 DQL User Defined Functions。
此 git 存储库中提供了一套完整的功能 DoctrineExtensions
而上面的查询会变成DATE_ADD(pv.appointment_date, INTERVAL 48 HOUR) >= UTC_TIMESTAMP()
如果你想在 mysql 列字段上使用 INTERVAL(在 Doctrine 2,DQL 中),你可以按如下方式使用,
$qb->andWhere("DATE_ADD(pv.appointmentDate,48,'hour') >= UTC_TIMESTAMP()");
它将打印 SQL 如下,
...... DATE_ADD(p0_.appointmentDate, INTERVAL 48 HOUR) >= UTC_TIMESTAMP() .....
当我使用下面的查询(Doctrine 2)时,我遇到了错误,并且不能在查询中使用 INTERVAL,
$qb->andWhere("(pv.appointment_date + INTERVAL 48 HOUR) >= UTC_TIMESTAMP()");
错误:应为 Doctrine\ORM\Query\Lexer::T_CLOSE_PARENTHESIS,得到“48”
Doctrine 是一个使用 DQL 的 ORM,它与 SQL 不同。默认情况下,并非 sql 中的所有函数都被 doctine 支持。 DQL 不附带对 INTERVAL 的支持。为此,您必须添加用户定义的函数 DQL User Defined Functions。
此 git 存储库中提供了一套完整的功能 DoctrineExtensions
而上面的查询会变成DATE_ADD(pv.appointment_date, INTERVAL 48 HOUR) >= UTC_TIMESTAMP()
如果你想在 mysql 列字段上使用 INTERVAL(在 Doctrine 2,DQL 中),你可以按如下方式使用,
$qb->andWhere("DATE_ADD(pv.appointmentDate,48,'hour') >= UTC_TIMESTAMP()");
它将打印 SQL 如下,
...... DATE_ADD(p0_.appointmentDate, INTERVAL 48 HOUR) >= UTC_TIMESTAMP() .....