Я использую Laravel -5.8 для разработки платформы «Отпуск персонала».
В настоящее время я нахожусь в заявке на отпуск. В начале каждого года администратор устанавливает все выходные и сохраняет их в таблице hr_holiday_dates, как показано ниже:
class HrHolidayDate extends Model
{
protected $table = 'hr_holiday_dates';
protected $primaryKey = 'id';
protected $fillable = [
'holiday_name',
'date_from',
'date_to',
];
}
Сотрудник входит в приложение, чтобы сделать запрос на отпуск.
Модель: HrLeaveRequest:
class HrLeaveRequest extends Model
{
public $timestamps = false;
protected $table = 'hr_leave_requests';
protected $primaryKey = 'id';
protected $fillable = [
'id',
'employee_id',
'reason',
'leave_type_id',
'commencement_date',
'resumption_date',
'no_of_days',
];
public function employee()
{
return $this->belongsTo('App\Models\Hr\HrEmployee','employee_id');
}
public function leaveType()
{
return $this->belongsTo('App\Models\Hr\HrLeaveType','leave_type_id');
}
}
Когда сотрудник делает запрос на отпуск, он выбирает тип_пункта, дату_комментария и дату_действия. Значение no_of_days не выбрано, но оно основано на интеллекте приложения.
Контроллер
public function create()
{
return view('hr.leave_requests.create');
}
public function store(StoreLeaveRequest $request)
{
try {
$commencementDate = Carbon::parse($request->commencement_date);
$resumptionDate = Carbon::parse($request->resumption_date);
$employeeId = Auth::user()->employee_id;
$leave = new HrLeaveRequest();
$leave->leave_type_id = $request->leave_type_id;
$leave->commencement_date = $commencementDate ->toDateTimeString();
$leave->resumption_date = resumptionDate ->toDateTimeString();
$leave->no_of_days = $request->no_of_days;
Session::flash('success', 'Leave Request is created successfully');
return redirect()->route('hr.leave_requests.index');
} catch (Exception $exception) {
Session::flash('error', 'Action failed! Please try again');
return redirect()->route('hr.leave_requests.index');
}
}
Для отпуска no_of_days я хочу, чтобы приложение получало его между commencement_date и resuming_date. Но прежде чем он это сделает, он удаляет выходные (субботу и воскресенье) из выбранных дат. Кроме того, он переходит к hr_holiday_days, который попадает в диапазон выбранных дат и извлекает праздничные дни. Следует также учитывать выходные дни в праздничные дни.
Как мне получить:
$ отпуск-> no_of_days
из объяснения выше ?
Спасибо.