30

How to use the expression mysql NOW() in doctrine querybuilder?

4

2 回答 2

51

在 Doctrine2 中,您必须使用以下内容之一而不是NOW().
这个:

CURRENT_TIMESTAMP()

或者:

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

如果您只想要时间或日期,请使用其中之一: CURRENT_TIME()CURRENT_DATE()

文档可以在这里找到

于 2012-12-17T01:24:27.883 回答
9

使用查询生成器,它看起来像这样:

$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()')
    );
于 2015-10-19T12:08:24.460 回答