0

私はドクトリンODMで働いています。私はドクトリンが初めてです..実際には、今日クエリビルダーを使用してすべて挿入されたコレクションからすべてのデータを削除しようとしています。しかし、私はそれを行うことができません。これについて私を助けてください。私が使用しようとしているクエリビルダーは以下のとおりです。

.....->createQueryBuilder('Document')
           ->remove()
           ->field('active')->equals(1)
           ->where('createdOn')->equals(new MongoDate(date()))
           ->getQuery();
4

1 に答える 1

0

さて、次のとおりです。

new MongoDate(date())

その正確なタイムスタンプ値を持つものがある可能性は低く、確かに 1 日ではありません。

あなたが見つけたいのは、今日と翌日の間の「範囲」です。したがって、最初に日付を計算します。

  $date = new DateTime();                       # Time right now
  $ts = $date->getTimestamp();

  $today = $ts - ( $ts % ( 60 * 60 * 24 ) );    # Round to the day
  $tomorrow = $today + ( 60 * 60 * 24 );        # Add one day to that

  $start = new MongoDate( $today );
  $end = new MongoDate( $tomorrow );

次に、「範囲」の値を呼び出します。

(...)->createQueryBuilder('Document')
       ->remove()
       ->field('active')->equals(1)
       ->where('createdOn')->range( $start, $end )
       ->getQuery()
       ->execute();

通常、MongoDB クエリ用語では$gtand$lt演算子で表現されますが、doctrine DSL には範囲を表す結合演算子があります。

于 2015-01-06T06:10:20.383 に答える