javascript - 使用时间表时,Laravel 验证似乎不起作用
问题描述
我得到了每个科目的时间表。我希望时间表是唯一的或不重复的。我有一个用于room
, teacher
, time
,的列day
,checker
它被分配用于检查时间表。希望该时间表不与周一至周五的time
, room
, teacher
,checker
和冲突day
。
我试图在控制器中测试我的代码,但它似乎不起作用。即使我更新了重复的时间表,它也会出现我放入的异常,但在状态代码中它是 200。有人可以知道这个有什么问题吗?
我的控制器
public function update(Request $request, Schedule $schedule, $id)
{
$schedule = Schedule::findOrFail($id);
$days = implode(",", $request->day);
//days = Mon,Tue,Wed,Thu,Fri,Sat
//time = eg. 12:30 PM
$forlike = "((schedules.day like '%" .
str_replace(",", "%') or (schedules.day like '%",
str_replace(' ', '', $days)) . "%'))";
$validate = Schedule::whereRaw($forlike)
->where('subject_code_id',$request->subject_code_id)
->where('teacher_id',$request->tid)
->where('room_id',$request->room_id)
->where('start_time','<',strtotime($request->end_time))
->where('end_time','>',strtotime($request->start_time))
->where('school_year',$request->school_year)
// ->where('day',$request->day)
->where('term',$request->term)
->where('semester',$request->semester)
->where('student_id',$request->student_id)
->first();
if(!empty($validate)){
throw new \ErrorException('Record Exist');
} else{
$schedule->subject_code_id = $request->subject_code_id;
$schedule->teacher_id = $request->tid;
$schedule->room_id = $request->room_id;
$schedule->start_time = $request->start_time;
$schedule->end_time = $request->end_time;
$schedule->school_year = $request->school_year;
$schedule->semester = $request->semester;
$schedule->term = $request->term;
$schedule->day = $days;
$schedule->student_id = $request->student_id;
$schedule->save();
}
前端
updateSchedule() {
let params = {day: this.day}
axios.put('/updateSchedule/' + this.form.scid,{
tid: this.tid.id,
room_id:this.room_id.id,
start_time: this.form.start_time,
end_time: this.form.end_time,
day: this.day,
term: this.form.term,
semester: this.form.semester,
subject_code_id: this.sc_code.id,
school_year: this.form.school_year,
student_id: this.student_id.id
})
.then(() => {
swal.fire("Record Updated!", "", "success");
$('#exampleModal').modal('hide');
$('#exampleModal').modal('close');
$(".modal-backdrop").remove();
this.getSchedulesPagination()
})
.catch((e) => {
console.log(e.status)
swal.fire("Record Exist", "", "warning");
$('#exampleModal').modal('hide');
$(".modal-backdrop").remove();
this.getSchedulesPagination()
})
}
解决方案
也许您需要先使用 Carbon 解析时间\Carbon\Carbon::parse($request->end_time)
,然后使用 laravel whereTime 助手。
->whereTime('start_time','<',\Carbon\Carbon::parse($request->start_time))
推荐阅读
- dialogflow-es - 由于平台响应无效(使用 Youtube API),无法将 Dialogflow 响应解析为 AppResponse
- c# - 如何将固定大小的表单设置为不同的分辨率
- php - Laravel 多对多更新特定字段
- scala - Scala - 实现对象工厂模式
- android - 使用从 Json 获取的数据进行其他 Json 解析
- javascript - 有没有办法将 headerMenu 添加到组列?
- typescript - 使用 Enum 填充字段的通用工厂
- python - Python tkinter 从画布上获取颜色
- reactjs - next.js 应用程序需要 15-25 秒才能从谷歌应用程序引擎上的“冷”加载
- vb.net - 如何获得十个数字并显示最大和最小的数字?