Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel validation not exists in table

I have two tables, first one is students and second one is lesson_student table. They have m2m relationship between students and lessons tables. I want to check, if student_id exists in students table and not exists in lesson_student table, insert it. I use exists to check in students table but i have no idea how to check it is not exists in 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);
}

btw i am using laravel 5.6

like image 820
Nevermore Avatar asked Jun 18 '18 17:06

Nevermore


1 Answers

Probably you want to use unique rule like this:

$rules = [
   'student_id' => 'required|exists:students,id|unique:lesson_student:student_id'
]

EDIT

As you updated and explained in comment you want to have unique student_id and lesson_id in lesson_student table. Then you can use:

$rules = [
    'student_id' => [
       'required',
       'exists:students,id',
        \Illuminate\Validation\Rule::unique('lesson_student', 'student_id')
             ->where('lesson_id', $lesson->id),
     ]
];
like image 85
Marcin Nabiałek Avatar answered Oct 13 '22 08:10

Marcin Nabiałek