2016-04-07 4 views
-1

Ich habe eine Abfrage im Lumen. Aber es funktioniert nicht. Die Abfrage ist:Fix Mongo Abfrage in Lumen

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(); 

Aber wenn ich orWhere Funktion aus der Abfrage entferne ich erwartete Ergebnis bekommen

Antwort

1

Sie wahrscheinlich orWhere ein wenig falsch verwendet wird. Sie müssen wo zu einem anderen setzen wo Abfrage richtig ausführen. Was Sie tun, ist jetzt etwas wie die where a is 1 and b is 2 or (c is 3 and d is 4), aber ich glaube, Sie wollen, dass etwas zu tun, wie where (a is 1 and b is 2) or (c is 3 and d is 4)
Versuchen Sie diesen:

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

Dank. Entschuldigung, ich habe nur eine Frage, wie ich das Statusfeld aktualisieren kann, wenn jede Bestellung created_at nach 20 Minuten ist – amirali