Laravel table 中不存在验证
Laravel validation not exists in table
我有两个table,第一个是学生,第二个是lesson_student table。他们在学生和课程 table 之间建立了 m2m 关系。我想检查,如果 student_id 存在于学生 table 中并且不存在于 lesson_student table 中,请插入它。我使用 exists
签入学生 table 但我不知道如何检查它不存在于 lesson_student table.
public function store(Request $request, Lesson $lesson) {
$rules = [
'student_id' => 'required|exists:students,id'
];
$this->validate($request, $rules);
$lesson->students()->attach($request->student_id);
return $this->showAll($lesson->students);
}
顺便说一句,我正在使用 laravel 5.6
可能您想使用这样的 unique 规则:
$rules = [
'student_id' => 'required|exists:students,id|unique:lesson_student:student_id'
]
编辑
正如您在评论中更新和解释的那样,您希望在 lesson_student
table 中具有唯一的 student_id 和 lesson_id。然后你可以使用:
$rules = [
'student_id' => [
'required',
'exists:students,id',
\Illuminate\Validation\Rule::unique('lesson_student', 'student_id')
->where('lesson_id', $lesson->id),
]
];
我有两个table,第一个是学生,第二个是lesson_student table。他们在学生和课程 table 之间建立了 m2m 关系。我想检查,如果 student_id 存在于学生 table 中并且不存在于 lesson_student table 中,请插入它。我使用 exists
签入学生 table 但我不知道如何检查它不存在于 lesson_student table.
public function store(Request $request, Lesson $lesson) {
$rules = [
'student_id' => 'required|exists:students,id'
];
$this->validate($request, $rules);
$lesson->students()->attach($request->student_id);
return $this->showAll($lesson->students);
}
顺便说一句,我正在使用 laravel 5.6
可能您想使用这样的 unique 规则:
$rules = [
'student_id' => 'required|exists:students,id|unique:lesson_student:student_id'
]
编辑
正如您在评论中更新和解释的那样,您希望在 lesson_student
table 中具有唯一的 student_id 和 lesson_id。然后你可以使用:
$rules = [
'student_id' => [
'required',
'exists:students,id',
\Illuminate\Validation\Rule::unique('lesson_student', 'student_id')
->where('lesson_id', $lesson->id),
]
];