web-dev-qa-db-ja.com

Doctrine QueryBuilderの式mysql NOW()

doctrine querybuilderで式mysql NOW()を使用するには?

28
user1906245

Doctrine2ではNOW()の代わりに以下のいずれかを使用する必要があります。
この:

_CURRENT_TIMESTAMP()
_

または:

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

時間のみまたは日付のみが必要な場合は、次のいずれかを使用します:CURRENT_TIME()およびCURRENT_DATE()

ドキュメントはここにあります

44
Mats Rietdijk

クエリビルダーを使用すると、次のようになります。

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