2017-09-16 4 views
0

Ich versuche Zeit Verfügbarkeit für mein Planungssystem zu bekommen. Ich weiß, wie man es mit normaler SQL-Abfrage macht, aber ich habe Probleme, die Abfrage zu Laravel Eloquent zu übersetzen. Meine Frage ist wie die untenLaravel MySQL: Übersetzen von SQL-Abfragen nach Laravel Eloquent

$query = "SELECT * FROM schedules WHERE (time_start BETWEEN '$start_datetime' AND '$end_datetime') OR (time_endBETWEEN '$start_datetime' AND '$end_datetime')"; 

und hier ist was ich mit Laravel versucht haben, eloquent bisher

$sch = DB::table('schedules') 
       ->where(function ($query) { 
        $query->whereBetween('time_start', [$start_datetime, $end_datetime]); 
       }) 
       ->orWhere(function($query){ 
        $query->whereBetween('time_end', [$start_datetime, $end_datetime]); 
       })->get(); 

irgendwelche Ideen, wie man es richtig machen? Ich erhalte einen Fehler mit meiner Laravel eloquent Abfrage Undefined variable: start_datetime

Dank

Antwort

1

Sie müssen die Variablen Schließung Umfang aufrufen, indem Sie Verwendung

$sch = DB::table('schedules') 
       ->where(function ($query) use ($start_datetime,$end_datetime) { 
        $query->whereBetween('time_start', [$start_datetime, $end_datetime]); 
       }) 
       ->orWhere(function($query) use ($start_datetime,$end_datetime){ 
        $query->whereBetween('time_end', [$start_datetime, $end_datetime]); 
       })->get(); 
+0

Dank. aber ich bekomme keine Ergebnisse aus der Datenbank. Es wird eine leere Sammlung zurückgegeben. Ich versuchte auch, die Werte der Variablen $ start_datetime und end_datetime zu ändern, um eine Übereinstimmung in der Datenbank zu erzielen, aber immer noch keine Ergebnisse. –

+0

dann etwas falsch in Ihrer Abfrage, Sie können Abfrageprotokoll aktivieren und vergleichen Sie Ihre Abfrage dann können https://stackoverflow.com/questions/18236294/how-do-i-get-the-query-builder-to-output- its-raw-sql-query-as-a-string –

+0

habe es gefunden, ich gebe falsche Werte an die Variablen, deshalb funktioniert es nicht .. jetzt bekomme ich Ergebnisse. Danke Kumpel! –