3 回答

TA貢獻1818條經(jīng)驗 獲得超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條經(jīng)驗 獲得超6個贊
您可以使用規(guī)則https://laravel.com/docs/5.8/validation#rule-unique創(chuàng)建驗證器
$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條經(jīng)驗 獲得超7個贊
這可以通過幾種不同的方式處理,但為了可讀性和將查詢數(shù)量保持在最低限度,我將更create()改為 afirstOrCreate()并使用內(nèi)置的 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'],
]);
由于您可以將兩個數(shù)組傳遞給firstOrCreate,它將返回與電子郵件匹配的第一條記錄,或者使用您傳遞給它的屬性創(chuàng)建一個新記錄。然后,您可以使用wasRecentlyCreated它來檢查它是新記錄還是已經(jīng)存在。
if($user->wasRecentlyCreated){
return whatever you need if it is a new user
}
else{
return user was already in the database
}
- 3 回答
- 0 關(guān)注
- 242 瀏覽
添加回答
舉報