Используя Laravel -5,8, я хочу вычислить количество рабочих дней, исключая выходные и праздничные дни c.
public function store(StoreLeaveRequestRequest $request)
{
$commencementDate = Carbon::parse($request->commencement_date);
$resumptionDate = Carbon::parse($request->resumption_date);
$holidays = DB::table('hr_employees')->select('holiday_date')->whereYear('created_at', '=', date('Y'))->get();
$numOfDays = $resumptionDate->diffInWeekdays($commencementDate) + 1;
$leaverequest = HrLeaveRequest::create([
'leave_type_id' => $request->leave_type_id,
'commencement_date' => $commencementDate,
'resumption_date' => $resumptionDate,
'authorized_days' => $request->authorized_days,
'available_days' => $request->available_days,
'no_of_days' => $numOfDays,
]);
Session::flash('success', 'Leave Request is created successfully');
return redirect()->route('service.leave_requests.index');
}
Из функции контроллера, приведенной выше, я рассчитал дни отпуска, исключая выходные дни с использованием:
$numOfDays = $resumptionDate->diffInWeekdays($commencementDate) + 1;
Тем не менее, у меня есть таблица для праздника, которая называется hr_holidays, а класс модели - HrHoliday. Это поле holiday_date
Теперь, как мне добавить:
$holidays = DB::table('hr_employees')->select('holiday_date')->whereYear('created_at', '=', date('Y'))->get();
к этому коду:
$numOfDays = $resumptionDate->diffInWeekdays($commencementDate) + 1;
, чтобы исключить также публичные c праздничные дни.
Может быть один или несколько выходных или даже ни одного в конкретном запросе на отпуск.
Как мне добиться этого и сохранить его в:
'no_of_days' => $ numOfDays,
Спасибо