Подтвердить что ты не робот

Выражение mysql NOW() в Doctrine QueryBuilder

Как использовать выражение mysql NOW() в doctring querybuilder?

4b9b3361

Ответ 1

В Doctrine2 вы должны использовать одно из следующих значений вместо NOW().
Это:

CURRENT_TIMESTAMP()

Или же:

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

Если вы хотите использовать только время или только дату, используйте один из них: CURRENT_TIME() и CURRENT_DATE()

Документацию можно найти здесь.

Ответ 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()')
    );