【发布时间】:2020-10-02 06:07:44
【问题描述】:
在我的控制器中,我一次在三个不同的表中插入数据。 在插入一些独特的字段之前,我已经进行了验证。但是在更新时它说电子邮件已经存在。我进行了很多搜索,并通过在验证规则中传递 id 得到了一个适用于除我之外的所有人的解决方案。
我试过了
$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();
这样不行,我不知道为什么 还有一个主要问题是 StudentParent 模型不同,如何在验证中将此模型的 id 传递给唯一更新
【问题讨论】:
-
你输入了:'student_email->"required|unique:students,student_email,$id",应该是:"student_email"=>required|unique:students,student_email,$id",
-
在插入新记录时从验证中删除 id。仅在您更新信息时使用。
-
@OMR 抱歉打错了
-
@uditrawat 我正在更新记录
-
$validatedData = $request->validate([ 'admission_no' => 'required|unique:students,admission_no,' . $id ]);像这样尝试并检查 $validateData->passes() 是否然后更新记录。
标签: laravel laravel-validation