通过在验证中传递id,更新时的Laravel唯一验证无效
在我的控制器中,我一次在三个不同的表中插入数据。 我在插入一些唯一字段之前进行了验证。但在更新时,它说电子邮件已经存在。我搜索了很多,通过在验证规则中传递id,得到了一个对除我之外的所有人都有效的解决方案 我试过了通过在验证中传递id,更新时的Laravel唯一验证无效,laravel,laravel-validation,Laravel,Laravel Validation,在我的控制器中,我一次在三个不同的表中插入数据。 我在插入一些唯一字段之前进行了验证。但在更新时,它说电子邮件已经存在。我搜索了很多,通过在验证规则中传递id,得到了一个对除我之外的所有人都有效的解决方案 我试过了 $this->validate($request,[ 'admission_no'=>"required|unique:students,admission_no,$id", 'student_email=>"required|unique:stud
$this->validate($request,[
'admission_no'=>"required|unique:students,admission_no,$id",
'student_email=>"required|unique:students,student_email,$id",
'guardian_email'=>"required|unique:student_parents,guardian_email,$id"
]);
$student = Student::find($id);
$student->admission_no = $request->admission_no;
$student->student_email = $request->student_email;
$student->save();
//parent model
$parent = StudentParent::where('student_id',$student->id)->first();
$parent->guardian_email = $request->guardian_email;
$parent->save();
这样不行我不知道为什么
另外,主要问题是学生家长模型不同,如何在验证过程中传递此模型的id以进行唯一更新您的
学生
和学生家长
表具有不同的$id
,因此,您需要通过guardian\u电子邮件上的student\u parents
tableid
验证:
$validatedData = $request->validate([
'admission_no'=>"required|unique:students, admission_no, $id", // expect students table id
'student_email'=>"required|unique:students, student_email, $id", // expect students table id
'guardian_email'=>"required|unique:student_parents, guardian_email, $student_parents_id" // pass student_parents table id here
]);
希望这有助于您的学生
和学生家长
表格具有不同的$id
,因此您需要通过监护人电子邮件上的学生家长
表格id
验证:
$validatedData = $request->validate([
'admission_no'=>"required|unique:students, admission_no, $id", // expect students table id
'student_email'=>"required|unique:students, student_email, $id", // expect students table id
'guardian_email'=>"required|unique:student_parents, guardian_email, $student_parents_id" // pass student_parents table id here
]);
希望这有帮助您已经输入:'student_email->“必选|唯一:学生,学生电子邮件,$id”,应该是:“student_email”=>必选|唯一:学生,学生电子邮件,$id,插入新记录时从验证中删除id。仅在更新信息时使用。@OMR抱歉,这是一个错误typo@uditrawat我正在更新一条记录$validatedData=$request->validate(['入学号=>'必填项|唯一:学生,入学号,.$id]);尝试这样做,同时检查$validateData->passes()是否通过,然后更新记录。您输入的“学生电子邮件->”必需|唯一:学生,学生电子邮件,$id”应该是:“学生电子邮件”=>必需|唯一:学生,学生电子邮件,$id,插入新记录时从验证中删除id。仅在更新信息时使用。@OMR抱歉,这是一个错误typo@uditrawat我正在更新一条记录$validatedData=$request->validate(['入学号=>'必填项|唯一:学生,入学号,.$id]);尝试这样做,同时检查$validateData->passes()是否正确,然后更新记录。