代码之家  ›  专栏  ›  技术社区  ›  John Patrick Paguia

如何用时间数据计算2列并将其保存到“总计列”?

  •  0
  • John Patrick Paguia  · 技术社区  · 2 年前

    我正在制作考勤系统。我想计算从一个时间到另一个时间的总小时数,并将其显示在总小时数列中。

    我试过这个代码,但不起作用。我在我的用户模型上执行此操作

    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();
    }
    
    0 回复  |  直到 2 年前