2016-04-07 7 views
-1

私は内腔にクエリを持っています。しかし、それは動作しません。クエリは次のとおりです。LumenでMongoクエリを修正しました

return Order::whereBetween('source_longitude', [$minLon_try_one, $maxLon_try_one]) 
     ->whereBetween('source_latitude',[51.365807806703,51.454384193297]) 
     ->where('status','=','pending') 
     ->where('created_at','<=', 2016-04-07 12:00:35) 
     ->where('created_at','>=', 2016-04-07 11:55:35) 
     ->orWhere(function($query) 
     { 
        $query->whereBetween('source_longitude', [51.321519613407, 51.498672386593]) 
        ->whereBetween('source_latitude',[35.612195271526,35.756086728473]) 
        ->where('status','=','pending') 
        ->where('created_at','<=',2016-04-07 11:55:35) 
        ->where('created_at','>=',2016-04-07 11:50:35); 
     } 
     )->get(); 

をしかし、私は、クエリからorWhere機能を削除するとき、私はおそらく、少し間違ったorWhereを使用して

答えて

1

期待される結果を取得します。クエリを適切に実行する場所を別の場所に置く必要があります。何あなたが今やっていると、そのwhere a is 1 and b is 2 or (c is 3 and d is 4)のようなものですが、私はあなたがこの1試してみてくださいそのwhere (a is 1 and b is 2) or (c is 3 and d is 4)
のような何かをしたい、と考えている:

return Order::where(function ($query) { 
     $query->whereBetween('source_longitude', [$minLon_try_one, $maxLon_try_one]) 
      ->whereBetween('source_latitude', [51.365807806703, 51.454384193297]) 
      ->where('status', '=', 'pending') 
      ->where('created_at', '<=', '2016-04-07 12:00:35') 
      ->where('created_at', '>=', '2016-04-07 11:55:35'); 
    })->orWhere(function ($query) { 
     $query->whereBetween('source_longitude', [51.321519613407, 51.498672386593]) 
      ->whereBetween('source_latitude', [35.612195271526, 35.756086728473]) 
      ->where('status', '=', 'pending') 
      ->where('created_at', '<=', '2016-04-07 11:55:35') 
      ->where('created_at', '>=', '2016-04-07 11:50:35'); 
    })->get(); 
+0

感謝を。申し訳ありませんが、私はちょうど質問がどのようにステータスフィールドを更新することができます各注文created_at過去20分 – amirali

関連する問題