В таблице нет проверки Laravel

У меня есть две таблицы, первая - это студенты, а вторая - таблица 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

Niklesh Raut 18.06.2018 19:45

В таблице lesson_student есть только lesson_id и student_id, это сводная таблица. @ C2486

Nevermore 18.06.2018 22:42
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
2
7 934
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Возможно, вы захотите использовать такое правило уникальный:

$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 18.06.2018 22:43

@Nevermore Я так и думал, но вы не упомянули об этом в своем вопросе. Итак, где у вас будет ваш идентификатор урока при выполнении этого запроса?

Marcin Nabiałek 18.06.2018 22:45

Набиалек мой плохой, ты прав. Я скучаю по этому. Я обновил вопрос полным кодом. Простите.

Nevermore 18.06.2018 22:46

Другие вопросы по теме