簡體   English   中英

Laravel 5.8 檢查數據庫中的記錄是否存在不工作

[英]Laravel 5.8 check record in the database if exists not working

我有一個時間表,我希望它有任何重復項。 如果用戶將相同的數據放入數據庫中已有的表單中,它將不會轉到dd('exists')有誰知道問題出在哪里?

這是我的更新

$schedule = Schedule::findOrFail($id);

$validate = Schedule::where('subject_code_id',$request->subject)
                    ->where('teacher_id',$request->teacher)
                    ->where('room_id',$request->room)
                    ->where('start_time',$request->start_time)
                    ->where('end_time',$request->end_time)
                    ->where('school_year',$request->schoolyr)
                    ->where('day',$request->days)
                    ->where('term',$request->term)
                    ->where('semester',$request->sem)
                    ->count();

if($validate == 1){
          dd('exist');
} else{
            $schedule->update($request->all());
}

試過dd($request->all()); 我有

array:11 [
  "id" => 9
  "term" => "2"
  "semester" => "2"
  "start_time" => "10:30 PM"
  "end_time" => "12:30 AM"
  "scid" => 10
  "teacher_id" => 5
  "room_id" => 6
  "subject_code_id" => 9
  "day" => "SAT"
  "school_year" => "2020"
]

您可以使用existsdoesntExist方法,而不是使用 count 方法來確定是否存在與查詢的約束匹配的任何記錄:

$schedule = Schedule::findOrFail($id);

$validate = Schedule::where('subject_code_id',$request->subject)
                ->where('teacher_id',$request->teacher)
                ->where('room_id',$request->room)
                ->where('start_time',$request->start_time)
                ->where('end_time',$request->end_time)
                ->where('school_year',$request->schoolyr)
                ->where('day',$request->days)
                ->where('term',$request->term)
                ->where('semester',$request->sem)
                ->exists();

if($validate){
      dd('exist');
} else{
        $schedule->update($request->all());
}

請訪問查看詳細信息 -聚合

您可以使用如下所示的 Rule 類通過 Laravel 唯一驗證輕松完成此操作

$this->validate($request, [
    'subject_code_id' => [
        Rule::unique('schedules')->where(function ($query) use($request) {
            return $query->where('teacher_id', $request->teacher); //you can add all conditions here
        }),
    ],
]);

有關更多信息,請參閱此處的獨特驗證規則

使用first()方法代替count()

$schedule = Schedule::findOrFail($id);

$validate = Schedule::where('subject_code_id',$request->subject)
                    ->where('teacher_id',$request->teacher)
                    ->where('room_id',$request->room)
                    ->where('start_time',$request->start_time)
                    ->where('end_time',$request->end_time)
                    ->where('school_year',$request->schoolyr)
                    ->where('day',$request->days)
                    ->where('term',$request->term)
                    ->where('semester',$request->sem)
                    ->first();

if($validate){
          dd('exist');
} else{
            $schedule->update($request->all());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM