3 回答
TA贡献1818条经验 获得超8个赞
你可以这样检查。
public function store(StoreUserInfo $data)
{
$data->validated();
$email = User::where('email',$data['email'])->first();
if($email){
return redirect()
->route('admin.users')
->with('message', 'Email is already exists.');
}
$user = User::create([
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'city' => $data['city']
]);
return redirect()
->route('admin.users')
->with('message', 'User created successfully');
}
TA贡献1963条经验 获得超6个赞
您可以使用规则https://laravel.com/docs/5.8/validation#rule-unique创建验证器
$messages = [
'email.unique' = 'Email taken',
];
Validator::make($email, [
'email' => [
'required',
Rule::unique('users')->where(function ($query) use($email) {
return $query->where('email', $email);
}),
],
],
$messages
);
这将帮助您管理所有验证,而不仅仅是一个。如果您添加其他验证,您将向用户返回所有错误,而不仅仅是电子邮件错误。
TA贡献1829条经验 获得超7个赞
这可以通过几种不同的方式处理,但为了可读性和将查询数量保持在最低限度,我将更create()改为 afirstOrCreate()并使用内置的 laravelwasRecentlyCreated来查看用户是否是新用户。
$user = User::firstOrCreate([
'email' => $data['email'],
], [
'password' => Hash::make($data['password']),
'city' => $data['city']
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
]);
由于您可以将两个数组传递给firstOrCreate,它将返回与电子邮件匹配的第一条记录,或者使用您传递给它的属性创建一个新记录。然后,您可以使用wasRecentlyCreated它来检查它是新记录还是已经存在。
if($user->wasRecentlyCreated){
return whatever you need if it is a new user
}
else{
return user was already in the database
}
- 3 回答
- 0 关注
- 206 浏览
添加回答
举报