2016-08-21 41 views
1

我收到2 errore而使用已经被插入BE完整性约束违规:1062重复条目

电子邮件提交申请表单

完整性约束违规:1062重复项“[email protected]”关键'users_email_unique'

SQLSTATE [23000]:完整性约束冲突:关键 'users_email_unique' 1062重复项 '[email protected]'

我有数据库索引users_email_unique这将导致错误,但我怎么能处理这样的错误

型号

<?php 

namespace App; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable { 
    protected $table = "users"; 
protected $fillable = array('first_name', 'last_name', 'password', 'email'); 
protected $hidden = ['password', 'remember_token']; 

public function roles() { 
    return $this->belongsToMany('App\Role', 'user_role', 'user_id', 'role_id'); 
} 

public function hasAnyRole($roles) { 
    if(is_array($roles)) { 
     foreach($roles as $role) { 
      if($this->hasRole($role)) { 
       return true; 
      } 
     } 
    } 
    else { 
     if($this->hasRole($roles)) { 
      return true; 
     } 
    } 

    return false; 
} 

public function hasRole($role) { 
    if($this->roles()->where('name', $role)->first()) { 
     return true; 
    } 

    return false; 
    } 
} 

控制器

<?php 

namespace App\Http\Controllers; 
use App\Post; 
use App\ContactMessage; 
use App\User; 
use App\Role; 
use Illuminate\Support\Facades\Validator; 
use Illuminate\Http\Request; 
use Illuminate\Support\Facades\Input; 
use Illuminate\Support\Facades\Redirect; 
use Illuminate\Support\Facades\Auth; 

class AdminController extends Controller { 
    public function postSignUp(Request $request) { 
    $rules = [ 
     'first_name' => 'required|min:3|max:80|alpha', 
     'last_name' => 'required|min:3|max:80|alpha', 
     'email' => 'required|between:3,64|email', 
     'password' => 'required|alphaNum|between:4,8|confirmed', 
     'password_confirmation'=> 'required|alphaNum|between:4,8' 
    ]; 

    $validator = Validator::make(Input::all(), $rules); 

    if($validator->fails()){ 
     return Redirect::route('signup')->withErrors($validator)->withInput(); 
    } 

    $user    = new User(); 
    $user->first_name = $request['first_name']; 
    $user->last_name = $request['last_name']; 
    $user->email  = $request['email']; 
    $user->password  = bcrypt($request['password']); 

    if($user->save()){dd('aaaaa'); 
     $user->roles()->attach(Role::where('name', 'User')->first()); 

     Auth::login($user); 

     return redirect()->route('blog.index'); 
    } 
    else { 
     dd('sssss'); 
    } 
    } 
} 

路线

Route::get('/signup', ['uses' => '[email protected]','as' => 'signup']); 
Route::post('/signup', ['uses' => '[email protected]','as' => 'signup']); 
+0

[Laravel赶上雄辩的 “唯一” 字段错误(HTTP的可能重复://计算器.COM /问题/ 27878719/laravel-追赶雄辩唯一场误差) – ArSeN

回答

0

只有更新您的规则是这样的:

$rules = [ 
    'first_name' => 'required|min:3|max:80|alpha', 
    'last_name' => 'required|min:3|max:80|alpha', 
    'email' => 'required|between:3,64|email|unique:users', 
    'password' => 'required|alphaNum|between:4,8|confirmed', 
    'password_confirmation'=> 'required|alphaNum|between:4,8' 
]; 

您可以在此查看本文档链接:https://laravel.com/docs/5.2/validation#rule-unique

问候

1

改变这个规则

'email' => 'required|between:3,64|email' 

这一个

'email' => 'required|between:3,64|email|unique:users' 
相关问题