2016-12-13 80 views
1

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

我rebuilded查询到类似的东西:

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

当我输入查询搜索表单上我得到错误:

未定义的变量:$ datefrom等

任何帮助?

回答

2

你已经将它传递给使用use的功能等:

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

如果你已经超过一个,你可以通过他们喜欢的:

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

希望这有助于。

+0

这是有效的,但timfrom必须低于timto甚至dateto大于datefrom。如何改变它,它会起作用,例如,如果我们得到:从2016-04-04 15:45到2016-04-08 12:12 – Egzan

+0

不知道你的意思@Egzan :(但我认为这是另一个很好的问题单独发布,我认为问题在OP _Undefined变量:$ datefrom等__解决了这篇文章,如果你真的可以** [接受它](http://meta.stackexchange.com/questions/5234/how - 接受答案 - 工作)**并继续发布另一个新的更详细的说明..祝你好运。 –