
超過残業ダメ!ゼッタイ!目指せホワイト企業!!
月の残業時間がn時間を超えている人にアラートを出す
user_id | work_time | work_date |
---|---|---|
1 | 08:00:00 | 2020-03-01 |
1 | 09:00:00 | 2020-03-02 |
2 | 12:00:00 | 2020-03-01 |
2 | 09:00:00 | 2020-03-02 |
3 | 08:00:00 | 2020-03-01 |
3 | 10:00:00 | 2020-03-02 |
このようなデータがあります。
残業時間がn時間を超えている人のuser_idを取り出します。
/** * 今月(3月)の残業時間が45時間以上の人のuser_idを返却 * * * @return array */ public function getRequiredControlUserIdAttribute() { $todayDate = Carbon::now();//本日の日時取得 $sql = <<< SQL SELECT user_id, SEC_TO_TIME( SUM( TIME_TO_SEC(work_time) - TIME_TO_SEC('8:00:00') ) ) AS total_overtime FROM tb_user_work_time WHERE work_time > CAST('8:00:00' AS TIME) AND work_date BETWEEN ? AND ?//2020-03-01 00:00:00〜2020-03-31 00:00:00'月の間の条件で取り出す GROUP BY user_id HAVING total_overtime >= CAST('2:00:00' AS TIME) SQL; $results = DB::select($sql, [ // $todayDate->firstOfMonth(), // $todayDate->lastOfMonth(), '2020-03-01 00:00:00', '2020-03-31 00:00:00', ]); $requiredControlUserId = []; foreach ($results as $index => $result) { $requiredControlUserId[$index] = $result->user_id; } return $requiredControlUserId;//2,3 }
このようになります。
コメント