在Doctrine QueryBuilder中表达mysql NOW()

use*_*245 28 mysql doctrine doctrine-query doctrine-orm

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

Mat*_*ijk 46

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

CURRENT_TIMESTAMP()
Run Code Online (Sandbox Code Playgroud)

要么:

...
createQuery(...'WHERE x.date = :now')
->setParameter('now', new \DateTime('now'))
...
Run Code Online (Sandbox Code Playgroud)

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

文档可以在这里找到.

  • 另请注意`'now'`是`DateTime`的默认参数,所以`new\DateTime()`就足够了. (4认同)

Ais*_*tis 8

使用查询构建器,它看起来像这样:

$qb
    ->select('B')
    ->from('RandomBundle:Banana', 'B')
    ->where(
        $qb->expr()->gt('B.expiresAt', ':now')
    )
    ->setParameter('now', '\'CURRENT_TIMESTAMP()\'');
Run Code Online (Sandbox Code Playgroud)

注:在参数设置额外的引号是需要获得CURRENT_TIMESTAMP()功能的工作.

或者干脆

$qb
    ->select('B')
    ->from('RandomBundle:Banana', 'B')
    ->where(
        $qb->expr()->gt('B.expiresAt', 'CURRENT_TIMESTAMP()')
    );
Run Code Online (Sandbox Code Playgroud)