使用雄辩关系计算注销时间



我正在构建一个考勤应用程序,我有一个考勤表,它有以下列:

  1. employee_id
  2. attace_time";日期时间">
  3. attace_type";字符串登录/注销">

该公司有两个轮班,第一个从早上6点到下午3点,第二个从下午3点到凌晨12点。

问题是在第二次轮班时,我无法计算注销时间和延迟时间,因为员工可以在第二天凌晨12点进行指纹识别,以及我像这样计算的方式

public function todayLogout()
{
return $this->hasOne(Attendance::class)
->where('attendance_type', 'logout')
->whereDate('attendance_time', '=', Carbon::today()->toDateString())
->orderBy('attendance_time', 'desc');
}

现在,由于where日期条件,上面的功能不会返回在上午12点之后按指纹的员工的注销记录。

即使我不得不改变我的表结构,它也能正常工作吗。

如果可行,您可以将需要时间的一天从00:00改为01:00,方法是将时间增加一小时,并取24小时之间的所有值,(也可以使用addMinute()addSecond()增加分钟或秒,或者使用addMinutes(31)addSeconds(31)增加一秒或多分钟,而不是增加1小时(

public function todayLogout()
{
return $this->hasOne(Attendance::class)
->where('attendance_type', 'logout')
->whereTime('attendance_time', '>', Carbon::today()->addHour())
->whereTime('attendance_time', '<' Carbon::today()->addDay()->addHour())
->orderBy('attendance_time', 'desc');
}

最新更新