[英]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"
]
您可以使用exists
和doesntExist
方法,而不是使用 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.