2017-09-16 17 views
0

私は自分のスケジューリングシステムの可用性を確保しようとしています。私は単純なSQLクエリでそれを行う方法を知っていますが、Laravel Eloquentにクエリを翻訳するのに問題があります。私のクエリはLaravel MySQL:SQLクエリをLaravel Eloquentに翻訳する

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

下図のようなもので、ここで私は雄弁laravelこれまで

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

任意のアイデアはどのように右のそれを行うにして試してみましたが何ですか?私は私のlaravel雄弁クエリUndefined variable: start_datetime

おかげで、エラーを取得しています

答えて

1

あなたは使用このため

$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

感謝を使用して閉鎖スコープに変数を呼び出す必要があります。私はデータベースから結果を得ていません。それは空白のコレクションを返します。私は '$ start_datetime'と' end_datetime'変数の値を変更してデータベースに一致させましたが、結果は得られませんでした。 –

+0

あなたのクエリに何か間違っている場合は、クエリログを有効にしてクエリを比較し、https://stackoverflow.com/questions/18236294/how-do-i-get-the-query-builder-to-output-そのraw-sql-query-as-a-string –

+0

が見つかりました。私は間違った値を変数に渡しています。ありがとう! –