2016-12-13 88 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 - 接受答案 - 工作)**並繼續發佈另一個新的更詳細的說明..祝你好運。 –