MySQL的表达NOW()的学说的QueryBuilder(Expression mysql NOW

2019-08-04 04:11发布

如何在教义QueryBuilder的NOW()使用表达式的MySQL?

Answer 1:

在Doctrine2你必须使用以下,而不是一个NOW()
这个:

CURRENT_TIMESTAMP()

要么:

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

如果你想只有时间或只有日期使用其中的一个: CURRENT_TIME()CURRENT_DATE()

文档可以在这里找到 。



Answer 2:

使用查询构建器它是这样的:

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


文章来源: Expression mysql NOW() in Doctrine QueryBuilder