如何在doctrine querybuilder中使用表达式mysql NOW()?
答案 0 :(得分:42)
在Doctrine2中,您必须使用以下其中一项而不是NOW()
这样:
CURRENT_TIMESTAMP()
或者:
...
createQuery(...'WHERE x.date = :now')
->setParameter('now', new \DateTime('now'))
...
如果您只想要时间或仅使用其中一个:
CURRENT_TIME()
和CURRENT_DATE()
答案 1 :(得分:8)
使用查询构建器,它看起来像这样:
$qb
->select('B')
->from('RandomBundle:Banana', 'B')
->where(
$qb->expr()->gt('B.expiresAt', ':now')
)
->setParameter('now', '\'CURRENT_TIMESTAMP()\'');
注意:参数集上的额外引号为必需,以使CURRENT_TIMESTAMP()
功能正常工作。
或者只是
$qb
->select('B')
->from('RandomBundle:Banana', 'B')
->where(
$qb->expr()->gt('B.expiresAt', 'CURRENT_TIMESTAMP()')
);