我想验证数据库中的电子邮件地址是否重复? 这是我的代码:
'users.*.email'=> ['required','unique:users','email']
这是我的控制器
UsersController
public function MassStore(MassStoreUserRequest $request)
{
$inputs = $request->get('users');
return redirect()->route('admin.users.index');
}
这是我的POST数据(post data($ inputs)将如下发送):
'users' => [
[
'name' => 'Ken Tse',
'email' => 'ken@gamil.com',
'password' => 'ken12ken34ken',
],
[
'name' => 'Ken Tse',
'email' => 'ken@gamil.com', //duplicate, so need trigger error
'password' => 'ken12ken34ken',
],
]
这是我得到的错误:
[2019-12-10 15:51:16] local.DEBUG:PDOException:SQLSTATE [23000]:违反完整性约束:1062键“
ken@gamil.com
”的条目“users_email_unique
”重复< / p>
MassStoreUserRequest
public function rules()
{
return [
'users' => ['required','array'],
'users.*.name' => ['required'],
'users.*.email' => ['required','unique:users','email'],
'users.*.password' => ['required','min:8']
];
}
答案 0 :(得分:3)
要防止在数组中提交重复数据,可以使用distinct规则:
return [
'users' => ['required', 'array'],
'users.*.name' => ['required'],
'users.*.email' => ['required', 'email', 'distinct', 'unique:users'],
'users.*.password' => ['required', 'min:8'],
];
答案 1 :(得分:2)
只需在电子邮件关键字(例如:
)中使用“ distinct”public function rules()
{
return [
'users' => ['required','array'],
'users.*.name' => ['required'],
'users.*.email' => ['required','unique:users','email', 'distinct'],
'users.*.password' => ['required','min:8']
];
}
答案 2 :(得分:1)
请尝试这样使用:
$rules = array(
"name" => "required",
"email" => "required|email|unique:users",
"password" => "required|min:6",
);