2017-09-16 88 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- its-raw-sql-query-as-a-string –

+0

发现它,我将错误的值传递给变量,这就是为什么它不工作..现在我得到的结果。谢了哥们! –