在Doctrine QueryBuilder中表达mysql NOW()

时间:2012-12-16 21:48:18

标签: mysql doctrine doctrine-orm doctrine-query

如何在doctrine querybuilder中使用表达式mysql NOW()?

2 个答案:

答案 0 :(得分:42)

在Doctrine2中,您必须使用以下其中一项而不是NOW() 这样:

CURRENT_TIMESTAMP()

或者:

...
createQuery(...'WHERE x.date = :now')
->setParameter('now', new \DateTime('now'))
...

如果您只想要时间或仅使用其中一个: CURRENT_TIME()CURRENT_DATE()

Documentation can be found here

答案 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()')
    );