医師のスケジュール ページがあり、医師は月曜日から金曜日までの勤務時間 (開始時間と終了時間) を設定できます。
訪問ページを使用することにより、ユーザーは毎日の医師のスケジュールされた時間内にのみ予約をスケジュールできます。
ユーザーの予約には visits テーブルを使用し、医師の勤務時間を構成するには doctor_schedules テーブルを使用しています。
訪問テーブル エントリ
id visit_date scheduled_intime scheduled_outtime physician_id
1 2012-04-23 09:15:00 09:30:00 1
2 2012-04-23 09:31:00 10:00:00 1
3 2012-04-24 10:00:00 10:15:00 1
4 2012-04-25 11:00:00 11:15:00 1
5 2012-04-26 15:15:00 15:30:00 1
6 2012-04-27 16:00:00 16:30:00 1
doctor_schedules テーブル エントリ
id start_time end_time day_of_week physician_id
1 09:00:00 18:00:00 monday 1
2 10:00:00 18:00:00 tuesday 1
3 11:00:00 17:00:00 wednesday 1
4 15:00:00 18:00:00 thursday 1
5 16:00:00 20:00:00 friday 1
注記各医師は、1 日につき 1 つのエントリのみを持つ必要があります (合計 5 つのエントリ)。
医師がスケジュール時間を変更したときの質問 です。その特定の日に医師のスケジュール時間を超えているすべての既存の訪問を調べたいと思います。
例
1)医師が水曜日の勤務時間を次のように変更した場合、訪問ID 4を検索したい
start_time: 12:00:00
end_time: 17:00:00
2)勤務時間後に医師が変わった場合、訪問ID 4,5を見つけたい
水曜日:
start_time: 12:00:00
end_time: 17:00:00
木曜日
start_time: 15:30:00
end_time: 18:00:00