Laravel 5.8面临非常不确定的问题。使用User :: create();
创建用户时如果我为唯一的电子邮件设置了验证,那么它将返回我错误,即{“ message”:“给定的数据无效。”,“ errors”:{“ email”:[“ 。“]}}否则它将在数据库中为同一电子邮件地址插入4条记录。
这是我的控制人
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Route;
use Auth;
use DB;
use App\User;
use App\Logs;
use App\Role_user;
use App\Model\Admin\Modules_permission;
class UsersController extends Controller
{
protected $slugData;
public function __construct()
{
$this->middleware('auth');
$this->middleware('admin');
$this->slugData = DB::table('modules as m')
->Join('sub_modules as sm','sm.module_id','m.id')
->select('sm.name as superSlug', 'sm.slug as subSlug')
->where('m.id', '=', '2')
->where('sm.id', '=', '5')
->get()
->toArray();
}
public function adminUsersCreate(Request $request){
$request->validate([
'name' => 'required',
'branch' => 'required',
'role' => 'required',
'status' => 'required',
'super_module' => 'required',
'password' => 'required|min:5',
//'email' => 'required|email'
'email' => 'required|email|unique:users'
], [
'branch.required' => 'Please select branch.',
'role.required' => 'Please select role.',
'status.required' => 'Status is required',
'super_module.required' => 'Please select super module.',
'name.required' => 'Name is required',
'password.required' => 'Password is required'
]);
try {
if(!empty($request->institute)){
$userData['institute_id'] = $request->institute;
if(!empty($request->user_type)){
$userData['institute_user_type_id'] = $request->user_type;
}
}
$userData['type'] = 'user';
$userData['name'] = $request->name;
$userData['email'] = $request->email;
$userData['password'] = bcrypt($request->password);
$userData['password_view'] = $request->password;
$userData['branch_id'] = $request->branch;
$userData['status'] = $request->status;
$userData['created_by'] = Auth::user()->id;
// echo "<pre>";print_r($userData);echo "</pre>";die;
$user = User::create($userData);
if(@$user->id >0){
$message['type'] = 'POST';
$message['success'] = 'User create successfully+++';
$roleData['user_id'] = $user->id;
$roleData['role_id'] = $request->role;
$role = Role_user::create($roleData);
if($role->id != 0 && !empty($role)){
if($request->super_module != 'not_that_time' && !empty($request->permission)){
$permUser = $user->id;
$permissions = $request->permission;
foreach ($permissions as $key => $subModule) {
$permData['user_id'] = $permUser;
$permData['created_by'] = Auth::user()->id;
$permData['module_id'] = $key;
foreach ($subModule as $key => $cruds){
$permData['submodule_id'] = $key;
$permID = Modules_permission::create($permData);
$permUpdateID = Modules_permission::whereId($permID->id)->update($cruds);
if($permUpdateID == 0 || empty($permID) || $permID->id == 0){
$routeName = Route::getCurrentRoute();
$message['type'] = 'POST';
$message['user_id'] = Auth::user()->id;
$message['opretion'] = 'Login User Create';
$message['error_message'] = 'Permission update failed afetr create user';
$message['url'] = $routeName->action['controller'];
Logs::create($message);
}elseif($permUpdateID == 1){
$message['type'] = 'POST';
$message['success'] = 'User create successfully';
}
}
}
}else{
$message['type'] = 'POST';
$message['success'] = 'User create successfully without permissions';
}
}else{
$routeName = Route::getCurrentRoute();
$message['type'] = 'POST';
$message['user_id'] = Auth::user()->id;
$message['opretion'] = 'Login User Create';
$message['error_message'] = 'Role ID not get afetr create user';
$message['url'] = $routeName->action['controller'];
Logs::create($message);
}
}else{
$routeName = Route::getCurrentRoute();
$message['type'] = 'POST';
$message['user_id'] = Auth::user()->id;
$message['opretion'] = 'Login User Create';
$message['error_message'] = 'User create failed';
$message['url'] = $routeName->action['controller'];
Logs::create($message);
}
return Response()->json($message);
} catch (\Exception $ex) {
$routeName = Route::getCurrentRoute();
$message['type'] = 'POST';
$message['user_id'] = Auth::user()->id;
$message['opretion'] = 'Login User Create';
$message['error_message'] = $ex->getMessage();
$message['url'] = $routeName->action['controller'];
Logs::create($message);
return Response()->json($message);
}
}
}
用户模型和关系:-
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'type', 'name', 'gender', 'institute_id', 'institute_user_type_id','password_view', 'land_line', 'permanent_address', 'mobile', 'dob', 'corresp_address', 'pin_code', 'photo', 'email', 'password','branch_id','status','created_by'
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function rolesByID()
{
return $this->belongsToMany('App\Role', 'role_user', 'user_id', 'role_id');
}
}
JS用来提交表单:-
$(function() {
$('.add-subadmin-form').validate({
errorElement: 'span',
errorClass: 'error',
rules: {
name: "required",
email: {
required: true,
email: true,
// remote: checkEmail()
},
password: {
required: true,
pwcheck: true,
minlength: 5
},
},
// Specify validation error messages
messages: {
name: "Please enter your name.",
password: {
required: "Please provide a password.",
pwcheck: "minimum 1 capital letters and lowercase letters with number and special characters",
minlength: "Your password must be at least 5 characters long."
},
email: "Please enter a valid email address.",
branch:{
required: "Please select branch.",
},
super_module:{
required: "Please select super module.",
},
sub_moduless:{
required: "Please select sub module.",
},
role:{
required: "Please select role.",
},
},
submitHandler: function(form) {
if(returnData == 0){
$('span.emailExist').text('This email is already exist');
$("span.emailExist").css("display", "block");
return false;
}else {
$('span.emailExist').remove();
var postedData = $('.add-subadmin-form').serialize();
$.ajax({
url: SITE_URL+'/admin/admin-users-Create',
method:"POST",
headers: {
'X-CSRF-TOKEN': $('input[name="_token"]').val()
},
data: $('.add-subadmin-form').serialize(),
success:function(response){
console.log(response);
if(response.success){
notify({
type: "success", //alert | success | error | warning | info
title: "Success! "+response.success,
showHideTransition: 'fade',
position: {
x: "right", //right | left | center
y: "top" //top | bottom | center
},
icon: '<img src="'+Asses_url+'/public/assets/images/paper_plane.png" />',
// message: response.success
});
window.setTimeout(function(){
window.location.href = SITE_URL+"/admin/admin-users-list";
}, 2000);
}else if(response.error_message){
ntotify({
type: "error", //alert | success | error | warning | info
title: "Error",
position: {
x: "right", //right | left | center
y: "top" //top | bottom | center
},
icon: '<img src="'+Asses_url+'/public/assets/images/paper_plane.png" />',
message: response.error_message
});
}
}
});
// form.submit();
}
}
});
});