2016-08-21 70 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' 
相關問題