如何在教义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