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),
     ]
];