我有请假申请表的输入
"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 时,它会返回错误。任何人都可以给我一些建议吗?非常感谢