Doctrine2 の datetime フィールドを日付と比較する方法は?
Doctrine2 から QueryBuilder で今日作成されたアイテムを取得したい。createdAt(Datetime)フィールドと今日のパラメータ(Date)を比較したいのです。1つのクエリでそれを行うことは可能でしょうか?
$qb = $this->createQueryBuilder('i');
$qb->innerJoin('i.type', 'it');
$qb->andWhere('it.name = :type');
$qb->andWhere('i.createdAt < :today');
// i.createdAt == datetime and :today parameter is a date
12
3
というのは、日付から、年、月、日を抽出することです。そして
から DoctrineExtensions を取り出して、MONTH DAY, YEAR とします。
例えば
DoctrineExtensions のようになります。
これでうまくいきました。必要なファイルは day.php, month.php, year.php だけです......。
あなたは、例えば、月を取得します。
day.php, month.php, year.php をバンドルにコピーする XyTestBundle
このような成熟した ORM で
DATE
関数が提供されていないことは稀です。しかし、datetime フィールドから日付を取り出すには、次のようにSUBSTRING
関数を適用します。お役に立てれば幸いです。
クエリビルダーに
today
パラメータを追加する必要があります。QueryBuilder を使うと、
'Y-m-d'
というフォーマットで日付を DateTime に比較することができます。