У меня есть ввод формы запроса на отпуск
"leave_from_date" : "2018-11-02 08:30:00"
"leave_to_date" : "2018-11-07 09:30:00"
"date_applied" : 5
"leave_type" : 2
Но я установил тип события 2: заблокированный день с 2018-11-04 по 2018-11-06, но я получил ошибку Response content must be a string or object implementing __toString()
Это мой код ниже, я проверяю, заблокирован ли тип дня 2 или нет. И если это не событие типа 2, оно будет добавлено в базу данных.
public function store(Request $request){
// $leave_request = $this->repository->create($request->all());
//exception for blocked day
$start_date = Carbon::parse(request('leave_from_date'))->startOfDay();
$end_date = Carbon::parse(request('leave_to_date'))->startOfDay();
//Change string to datetime
$events = Events::where('event_type_id', 2 )
->where('is_recurring', 1)
->get();
foreach ($events as $event) {
/** @var Events $event */
$rrule = $event->toRRule();
foreach ($rrule as $blocked_date) {
/** @var \DateTime $blocked_date */
$blocked_day = Carbon::createFromTimestamp($blocked_date->getTimestamp());
if ($blocked_day->between($start_date, $end_date)) {
return false;
}
}
}
//For One time event check in blocked day type 2
$exists = DB::table('events')
->where('event_type_id', 2)
->where('from_date', '<=', $start_date->endOfDay()) // cuoi ngay
->where('to_date', '>=', $start_date->startOfDay()) // dau ngay
->orWhere(function ($query) use($end_date) {
$query->where('event_type_id', 2)
->where('from_date', '<=', $end_date->endOfDay())
->where('to_date', '>=', $end_date->startOfDay());
})->orWhere(function ($query) use($start_date, $end_date) {
$query->where('event_type_id', 2)
->where('from_date', '<=', $start_date->endOfDay())
->where('to_date', '>=', $end_date->startOfDay());
})->orWhere(function ($query) use($start_date, $end_date) {
$query->where('event_type_id', 2)
->where('from_date', '<=', $end_date->endOfDay())
->where('to_date', '>=', $start_date->startOfDay());
})->exists();
if($exists) {
return false;
}
//--------------------------------
$this->validate($request, [
'leave_from_date' => 'required|date_format:Y-m-d H:i:s',
'leave_to_date' => 'date_format:Y-m-d H:i:s|required',
// 'emp_id' => 'exists:employees,employee_id',
'leave_type' => 'required|between:0,5',
]);
$leave_request = new LeaveRequest();
$leave_request->leave_from_date = $request->leave_from_date;
$leave_request->leave_to_date = $request->leave_to_date;
$leave_request->leave_type = $request->leave_type;
$leave_request->date_applied = $request->date_applied;
if($this->user->leave_request()->save($leave_request))
return response()->json([
'success' => true,
'Leave request' => $leave_request
]);
else
return response()->json([
'success' => false,
'message' => 'Sorry, leave request could not be added'
], 500);
}
Когда я удалил все исключения за заблокированный день, это добавит успех. Но когда я проверяю на заблокированный тип 2 дня, это возвращает ошибку. Кто-нибудь может дать мне несколько советов по этому поводу? Большое вам спасибо