我正在制作考勤系统。我想计算从一个时间到另一个时间的总小时数,并将其显示在总小时数列中。
我试过这个代码,但不起作用。我在我的用户模型上执行此操作
public function total()
{
$now = $this->freshTimestamp();
return $this->employeeAttendance()
->where('date', Carbon::now('Asia/Manila')->toDateString())
->whereNull('total')
->firstOrFail()
->update([
'total' => DB::table('attendance')->where('id')->sum(DB::raw('timeIn - timeOut')),
]);
}
这是我的Time In模型
public function timeIn()
{
$now = $this->freshTimestamp();
return $this->employeeAttendance()->create([
'name' => auth()->user()->name,
'date' => Carbon::now('Asia/Manila')->toDateString(),
'timeIn' => Carbon::now('Asia/Manila')->format('H:i:s'),
]);
}
这是我的Time Out in模型
public function timeOut()
{
$now = $this->freshTimestamp();
return $this->employeeAttendance()
->where('date', Carbon::now('Asia/Manila')->toDateString())
->whereNull('timeOut')
->firstOrFail()
->update([
'timeOut' => Carbon::now('Asia/Manila')->format('H:i:s'),
]);
}
这是我的控制器
public function store(Request $request)
{
$request->user()->timeIn();
return back();
}
public function update(Request $request)
{
$request->user()->timeOut();
return back();
}