再做表单验证的时候 创建和更新用了同一个RoleRequest 里面有两个字段都指定了unique 再更新的时候出现已经存在 请问要如何才能再更新的时候排除当前记录?
微信里点“发现”,扫一下
二维码便可将本文分享至朋友圈。
方案一: 在 UserRequest 中想办法
protected $create = [ 'email'=> 'required|unique:users', 'name'=> 'required', ... ]; protected $update = [ 'name'=> 'required', ... ]; public function rules() { if ($this->isMethod('get')) return []; if ($this->is('*/create')) return $this->create; else if ($this->is('*/update')) return $this->update; else return []; }
方案二: 在 UserController 中想办法
public function update(Request $request) { $form_data = $request->except(['_token', 'email']); $user = User::where('email', $request->email)->first(); $user->fill($form_data); $user->save(); }
方案三: 在 update 视图中想办法
<form action="{ route('update') }" method="POST"> Email: <input type="text" name="email" value="{ $user->email }" disabled> Name: <input type="text" name="name" value="{ $user->name }"> ... </form>
感谢,学习了!
'email' => 'unique:users,email_address,'.$user->id
可以在验证规则后面带id参数忽略
还可以这样!!!又学习了,谢了哈