不要对这个问题投下来,我知道之前有人问过,但是,我 找不到任何有效的答案!
我正在尝试使用唯一的电子邮件,但在验证期间忽略给定的ID。 尝试了几种方法来完成这项工作,其中有两种方法尚未实现,但没有成功:
Validator::make($request->all(), [
'username' => ['username', Rule::unique('user', 'username')->ignore($user->id)]
]);
另一个:
'username' => 'required|max:30,',
Rule::unique('user')->ignore($user->id),
感谢和帮助。
这是一些更多的信息,以防你认为最好的例子应该是明确的工作。 形式:
<input type="text" name="username" class="formClasses" id="usernameLocal"
value="{{ Auth::user()->username }}">
控制器:
public function saveUserChanges(Request $request){
$user = Auth::user();
$this->validate($request, [
'username' => 'required|max:30,',
Rule::unique('user')->ignore($user->id)
]);
$user->username = $request['username'];
$user->update();
return redirect()->route('userProfil', $user->userprofile->slug);
}
答案 0 :(得分:1)
如果您尝试保证唯一的电子邮件,则规则如下:
Validator::make($data, [
'email' => [
'required',
Rule::unique('users')->ignore($user->id),
],
]);
如果您的字段在用户表格中不是email
,请执行以下操作:
Validator::make($data, [
'email' => [
'required',
Rule::unique('users', 'column_name')->ignore($user->id),
],
]);
最后,如果用户表上的唯一ID不是id
,请执行:
Validator::make($data, [
'email' => [
'required',
Rule::unique('users', 'column_name')->ignore($user->id, 'unique_key_name'),
],
]);
要直接使用您的代码,它将如下所示:
$this->validate($request, [
'username' => [
'required',
'max:30',
Rule::unique('users')->ignore($user->id)
]
]);
我所做的更改是必需的和最大规则需要分开,并且所有规则都需要在数组中。我还将表从user
更改为users
,因为这是Laravel的默认值。