Laravel MySQL:将SQL查询翻译成Laravel Eloquent
问题描述:
我正在尝试为我的调度系统获取时间可用性。我知道如何用简单的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
感谢
答
您需要使用使用
$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();
感谢这个调用变量关闭范围。但我没有从数据库中得到任何结果。它返回一个空白的集合。我还尝试更改'$ start_datetime'和'end_datetime'变量的值来匹配数据库,但仍然没有结果。 –
然后在您的查询中出现错误,您可以启用查询日志并比较您的查询,然后可以解决https://*.com/questions/18236294/how-do-i-get-the-query-builder-to-output- its-raw-sql-query-as-a-string –
发现它,我将错误的值传递给变量,这就是为什么它不工作..现在我得到的结果。谢了哥们! –