如何避免在刷新Laravel应用程序页面时多次插入相同的数据



如何防止在刷新LaravelWeb应用程序用户插入页面时多次在数据库中插入相同的数据。我生成唯一的用户 ID。 但有时我的互联网连接丢失并尝试连接。该数据使用相同的用户 ID 插入两次。 如何避免它。

public function savenewusers(Request $request){
$data=$_POST;   
$usersid = Auth::user()->id;
$this->validate($request, ['name' => 'required','email'=>'required','role'=>'required','password'=>'required','useraddress'=>'required','district'=>'required']);   
$userslastcount=User::OrderBy('id','DESC')->first();
if(count($userslastcount) > 0){
$uniqid=$userslastcount->uniqueid+1;
$userid="EF000".$uniqid;    
} else {
$uniqid=1;
$userid="EF000".$uniqid;
}  
if(isset($data['managerid'])){
$managerid=$data['managerid'];      
} else {
$managerid="";      
}
$password=Hash::make($request->password);
$createUsers=User::create(['name'=>$data['name'],'email'=>$data['email'],'password'=>$password]);
$updateUsers=User::Where('id',$createUsers->id)->update(['userid'=>$userid,'officemobileno'=>$data['officemobileno'],'useraddress'=>$data['useraddress'],'district'=>$data['district'],'personalmobileno'=>$data['personalmobileno'],'personalemail'=>$data['personalemail'],'role'=>$data['role'],'managerid'=>$managerid,'uniqueid'=>$uniqid,'enable'=>1]);
alert()->success('User Created Successfully.', 'Success!'); 
return redirect('users');       

}

首先,您必须关注列中的任何人都应该是唯一的电子邮件或用户名。

是否可以像这样使用路由绑定验证:

public function saveNewUsers(UserValidationRequest $request)
{
}

然后,您必须创建验证请求文件。 使用此命令:

php artisan make:request UserValidationRequest 

验证文件:UserValidationRequest.php

<?php
namespace AppHttpRequestsUser;
use IlluminateFoundationHttpFormRequest;
class UserValidationRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'email' => 'required|email|max:255|unique:users,email',
];
}
}

您可以使用firstOrCreate.

$user = User::firstOrCreate(['name'=>$data['name'],'email'=>$data['email'],'password'=>$password]);
if ($user->wasRecentlyCreated) {
}

最新更新