2016-12-26 99 views
0

我想檢查輸入的時間是否已經在數據庫中存在或沒有?在$ dbsum和$ dbesum中,我在做總和,如果我輸入starttime 11:30,那麼它將在$ dbsum中給出690,如果我輸入endtime 12.30,那麼它將在$ dbesum中給出750。 'c_start'和'c_end'是數據庫中已經存在的總和。現在我想檢查'c_start'和'c_end'之間是否存在$ dbsum和$ dbesum。我的查詢就像下面的控制器。但它不起作用。Laravel:檢查時間whereBetween子句

$dbstime = explode(':',$request->input('starttime')); 
    $dbetime = explode(':',$request->input('endtime')); 

    $dbstime[0] = $dbstime[0]*60; 
    $dbetime[0] = $dbetime[0]*60; 

    $dbsum = array_sum($dbstime); 
    $dbesum = array_sum($dbetime); 

    $users=DB::table("bookings") 
    ->select("bookdate") 
    ->where([ 
      ['bookdate', '=', $request->input('bookdate')], 
      ['roomname', '=', $request->input('roomname')], 
      ['starttime', '=', $request->input('starttime')], 
      ['endtime', '=', $request->input('endtime')], 
    ->whereBetween('c_start', [$dbsum, $dbesum]) 
    ->whereBetween('c_end', [$dbsum, $dbesum]) 

    ->get(); 

回答

0
$users=DB::table("bookings") 
    ->select("id") 
    ->where('bookdate', '=', $request->input('bookdate')) 
    ->where('roomname', '=', $request->input('roomname')) 
    ->where(function ($query){ 
    $query->where($dbsum, '>', 'c_start'); 
    $query->orWhere($dbsum, '<', 'c_end'); 
    }) 
    ->orWhere(function($query){ 
    $query->where($dbesum, '>', 'c_start'); 
    $query->orWhere($dbesum, '<', 'c_end'); 
    }) 
    ->get(); 
+0

仍然得到同樣的輸出...不工作 – incorporeal

+0

什麼是DD()顯示? –

+0

dd()顯示爲空... – incorporeal