Laravel验证不存在于表中

时间:2018-06-18 17:28:13

标签: php laravel laravel-5 laravel-5.6 laravel-validation

我有两张桌子,第一张是学生,第二张是lesson_student表。他们在学生和课桌之间有m2m关系。我想检查一下,如果student_id存在于student表中而不存在于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

1 个答案:

答案 0 :(得分:1)

您可能希望使用unique这样的规则:

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

修改

当您在评论中更新和解释时,您希望在lesson_student表格中拥有唯一的student_id和lesson_id。然后你可以使用:

$rules = [
    'student_id' => [
       'required',
       'exists:students,id',
        \Illuminate\Validation\Rule::unique('lesson_student', 'student_id')
             ->where('lesson_id', $lesson->id),
     ]
];