2016-05-03 6 views
0

データベースに時間間隔を保存するという状況は、他の時間に影響しないスケジュールを意味します。PHP - Laravel:DBに重複しないで保存する方法

例:教室は、すでに7用に予約されている場合:00Amは、午前8時のユーザーにはない はその時間の間の時間を節約することができますすると、ユーザーはその中に8時30分に午前7時30分または を保存することはできません意味します時間間隔。

どのように時間間隔を確認し、laravelで時間を節約できますか?ここで

は私のコントローラです:

public function postAllocateRoom(Request $request) 
    { 

      $classRoom = new ClassRoom();   
      $classRoom->department_id=$request->Input(['department_id']);  
      $classRoom->room_id=$request->Input(['room_id']); 
      $classRoom->course_id=$request->Input(['course_id']); 
      $classRoom->day_id=$request->Input(['day_id']); 
      $classRoom->start=$request->Input(['start']); 
      $classRoom->end=$request->Input(['end']);   
      $classRoom->save();    
      return redirect('allocateRoomPage'); 
    } 

私はstartend型の名前と私のデシベルでtwoの列があります:あなたは、サーバー側でそれを確認したい場合は、追加のリクエストをしなければならないTime

+0

この機能には、JavascriptまたはjQueryを使用する必要があります。ビュー内のドロップダウンから使用される特定の時間を隠すだけです。 –

+0

あなたは私に一つを提案できますか?私は検索しましたが、役に立たないものは見つかりませんでした。 – User57

答えて

2

を時間をチェックするDBに。

$startTime = Carbon::parse($request->input('start')); 
$endTime = Carbon::parse($request->input('end')); 

$classRoomCount = ClassRoom::where(function ($query) { 
    $query->where('start', '>=', $startTime) 
      ->where('end', '<=', $startTime); 
})->orWhere(function ($query) { 
    $query->where('start', '>=', $endTime) 
      ->where('end', '<=', $endTime); 
})->count(); 

if ($classRoomCount > 0) { 
    echo 'Classroom is already booked'; 
} 
+0

私は日付ではない日付で確認する必要があります。そして、はい、すでにデータベースを保存して確認したいと思います! – User57

+0

開始時刻と終了時刻の保存にはどのような形式を使用しますか? –

+0

フォーマットは 'Time'です – User57

0

保存するときに間隔をとるかどうかを確認したり、既存の間隔をあらかじめ抽出してクライアント側に提示したりすることもできます。

関連する問題