我有一个包含以下细节的表: employees, working_hours, & appointments
Employees | working_hours | appointment
id, name | id, day, start_time, end_time, employeeable_id, employeeable_type | id, employee_id, start_date_time, end_date_time
关系:
class Employee extends Model
{
public function workingHours()
{
return $this->morphMany(WorkingHour::class, 'employeeable');
}
}
class WorkingHour extends Model
{
public function employeeable()
{
return $this->morphTo();
}
}
class Appointment extends Model
{
public function employee()
{
return $this->belongsTo(Employee::class);
}
}
员工A 的工作时间如下:
[
{ day: 1, start_time: '08:00:00', end_time: '17:00:00' },
...
{ day: 5, start_time: '08:00:00', end_time: '17:00:00 }
]
员工 A 在 2022 年 5 月 23 日 09:00:00 到 09:30:00 有一个预约(每个预约持续时间为 30 分钟)。问题:
如果管理员请求 2022 年 5 月 22 日 到 6 月 1 日 的 员工 A 可用时间槽,我期望得到以下响应:
[
{ '2022-05-22': ['08:00', '08:30', '09:00', ..., '17:00'] },
{ '2022-05-23': ['08:00', '08:30', '09:30'] } // 09:00 notice excluded.
...
{ '2022-06-01, [] }
]
如何定义上述查询?我所能想到的就是循环遍历员工A的每个工作小时时间,并检查该时间是否可用。