Laravel更新记录时,如何为stud_num添加入id排除验证(含自定义规则)
Laravel UserController 更新方法中给stud_num字段添加排除当前记录的唯一验证
要让stud_num字段拥有和username、email一致的「排除当前记录」唯一验证逻辑,只需修改stud_num验证规则数组里的unique规则,拼接当前用户ID即可:
将原本的:
"stud_num" => ["required", "unique:users,stud_num", "max:15", new StrMustContain('TG')],
修改为:
"stud_num" => ["required", "unique:users,stud_num," . $id, "max:15", new StrMustContain('TG')],
修改后的完整方法代码
public function update(Request $request, $id) { $this->validate($request, [ "first_name" => "required|max:255|regex:/^([^0-9]*)$/", "middle_name" => "nullable|max:255|regex:/^([^0-9]*)$/", "last_name" => "required|max:255|regex:/^([^0-9]*)$/", "contact" => ["required", "regex:/^(09|\\+639)\\d{9}$/"], "course" => "required", "role_as" => "required", "stud_num" => ["required", "unique:users,stud_num," . $id, "max:15", new StrMustContain('TG')], "username" => "required|alpha_dash|unique:users,username," . $id, "email" => "required|email:rfc,dns|unique:users,email," . $id ]); // codes for update }
这里的unique:users,stud_num," . $id规则会告知Laravel:验证stud_num在users表中唯一,但要排除ID为$id的当前记录,这样用户更新自身信息时,即使保留原stud_num也不会触发唯一验证错误,和username、email的验证逻辑完全统一。
内容的提问来源于stack exchange,提问作者Sharmae Reyes
相关产品推荐
相关产品推荐

