Laravel проверка не работает при работе с расписаниями - PullRequest
0 голосов
/ 12 апреля 2020

Я получил таблицу с расписанием для каждого предмета. Я хочу, чтобы графики были уникальными или не дублировались. Я получил столбец для 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()
                    })
            }

Что я получаю, когда обновляю дублированный график l

1 Ответ

1 голос
/ 13 апреля 2020

возможно, вам нужно сначала проанализировать время с помощью Carbon, например \Carbon\Carbon::parse($request->end_time), а затем использовать laravel whereTime helper.

->whereTime('start_time','<',\Carbon\Carbon::parse($request->start_time))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...