Laravel 查询生成器之间

Egz*_*zan 7 php sql database query-builder laravel

我构建了一个搜索表单,它将从数据库中选择标记,其中日期插入到数据选择器中。这工作正常,但是,当我添加时间时,出现错误。

我将查询重建为类似的内容:

$datefrom = $request->input('datefrom');
$dateto = $request->input('dateto');
$timefrom = $request->input('timefrom');
$timfrom = $timefrom.':00';
$timeto = $request -> input('timeto');
$timto = $timeto.':00';
$type = $request->input('type');

$maps = Map::select('lat','lng',$type,'temp','humidity','date','time')
                ->where(function($query){
                    $query->whereBetween('date',array($datefrom,$dateto))
                    ->whereBetween('time',array($timfrom,$timto));
                })
                ->get();
Run Code Online (Sandbox Code Playgroud)

当我在搜索表单上输入检查时,出现错误:

未定义变量:$datefrom 等。

有什么帮助吗?

Zak*_*rki 11

您必须使用uselike将其传递给函数:

->where(function($query) use ($datefrom){
     $query->whereBetween('date',array($datefrom,$dateto))
           ->whereBetween('time',array($timfrom,$timto));
})
Run Code Online (Sandbox Code Playgroud)

如果你有多个,你可以像这样传递它们:

->where(function($query) use ($datefrom,$dateto,$timfrom,$timto){
     $query->whereBetween('date',array($datefrom,$dateto))
           ->whereBetween('time',array($timfrom,$timto));
})
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。