В моем проекте Laravel -5.8 я пытался отправить запрос на отпуск по персоналу в базу данных. У меня есть 2 таблицы:
hr_leave_requests
hr_holidays
protected $ fillable = ['holiday_name', 'holiday_date' , 'creat_at',];
Контроллер
public function store(StoreLeaveRequestRequest $request)
{
$commencementDate = Carbon::parse($request->commencement_date);
$resumptionDate = Carbon::parse($request->resumption_date);
$holidays = DB::table('hr_holidays')->select('holiday_date')->whereYear('created_at', '=', date('Y'))->get();
$days = $commencementDate->diffInDaysFiltered(function (Carbon $date) use ($holidays) {
return $date->isWeekday() && !in_array($date, $holidays);
}, $resumptionDate);
$leaverequest = HrLeaveRequest::create([
'leave_type_id' => $request->leave_type_id,
'commencement_date' => $commencementDate,
'resumption_date' => $resumptionDate,
'no_of_days' => $days,
]);
Session::flash('success', 'Leave Request is created successfully');
return redirect()->route('service.leave_requests.index');
}
Просмотр
<form action="{{route('service.leave_requests.store')}}" method="post" class="form-horizontal" enctype="multipart/form-data">
{{csrf_field()}}
<div class="card-body">
<div class="form-body">
<div class="row">
<div class="col-sm-4">
<div class="form-group">
<label>Leave Type:<span style="color:red;">*</span></label>
<select class="form-control select2bs4" data-placeholder="Choose Leave Type" tabindex="1" name="leave_type_id" style="width: 100%;">
<option value="">Select Leave Type</option>
@if($leavetypes->count() > 0)
@foreach($leavetypes as $leavetype)
<option value="{{$leavetype->id}}">{{$leavetype->leave_type_name}}</option>
@endforeach
@endif
</select>
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label>Commencement Date:<span style="color:red;">*</span></label>
<input type="date" class="form-control" placeholder="dd/mm/yyyy" name="commencement_date" value="{{old('commencement_date')}}" min="{{Carbon\Carbon::now()->addDay()->format('Y-m-d')}}" max="{{Carbon\Carbon::now()->lastOfYear()->format('Y-m-d')}}">
</div>
</div>
<div class="col-sm-4">
<div class="form-group">
<label>Resumption Date:<span style="color:red;">*</span></label>
<input type="date" class="form-control" placeholder="dd/mm/yyyy" name="resumption_date" value="{{old('resumption_date')}}" min="{{Carbon\Carbon::now()->addDay()->format('Y-m-d')}}" max="{{Carbon\Carbon::now()->lastOfYear()->format('Y-m-d')}}">
</div>
</div>
</div>
</div>
</div>
<!-- /.card-body -->
<div class="card-footer">
<button type="submit" id="submit_create" class="btn btn-primary">{{ trans('global.save') }}</button>
</div>
</form>
Я хочу, чтобы приложение получало no_of_days, принимая разницу между resuming_date и commencement_date в таблице hr_leave_request, а также исключая выходные. Затем go к таблице hr_holiday и получите выходной c выходной в течение выходных дней.
Я использовал это для этого:
$days = $commencementDate->diffInDaysFiltered(function (Carbon $date) use ($holidays) {
return $date->isWeekday() && !in_array($date, $holidays);
Примечание: см. Полный код в контроллере
Когда я отправил, я получил эту ошибку:
"in_array () ожидает, что параметр 2 будет массивом, объект задан"
Как мне решить?
Спасибо.