У меня есть две таблицы, первая - это студенты, а вторая - таблица lesson_student. У них есть отношение m2m между учениками и таблицами уроков. Я хочу проверить, существует ли student_id в таблице студентов и не существует в таблице lesson_student, вставьте его. Я использую exists для проверки таблицы студентов, но я понятия не имею, как проверить, что ее нет в таблице lesson_student.
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
В таблице lesson_student есть только lesson_id и student_id, это сводная таблица. @ C2486






Возможно, вы захотите использовать такое правило уникальный:
$rules = [
'student_id' => 'required|exists:students,id|unique:lesson_student:student_id'
]
РЕДАКТИРОВАТЬ
Как вы обновили и объяснили в комментарии, вы хотите иметь уникальные student_id и lesson_id в таблице lesson_student. Тогда вы можете использовать:
$rules = [
'student_id' => [
'required',
'exists:students,id',
\Illuminate\Validation\Rule::unique('lesson_student', 'student_id')
->where('lesson_id', $lesson->id),
]
];
student_id не уникален в таблице lesson_student. В таблице lesson_student есть lesson_id и student_id. Это сводная таблица. Lesson_id и student_id оба уникальны.
@Nevermore Я так и думал, но вы не упомянули об этом в своем вопросе. Итак, где у вас будет ваш идентификатор урока при выполнении этого запроса?
Набиалек мой плохой, ты прав. Я скучаю по этому. Я обновил вопрос полным кодом. Простите.
Поделитесь структурой своей БД и проверьте только в одной таблице
lesson_student