2016-11-02 24 views
0

我試圖修改'RegisterController'來適應我的需要。Model.php第445行的MassAssignmentException:用戶名

RegisterController.php

<?php 

namespace App\Http\Controllers\Auth; 

use App\User; 
use App\profile; 
use App\roles_id; 
use App\permissions_id; 
use Validator; 
use App\Http\Controllers\Controller; 
use Illuminate\Foundation\Auth\RegistersUsers; 

class RegisterController extends Controller 
{ 
    /* 
    |-------------------------------------------------------------------------- 
    | Register Controller 
    |-------------------------------------------------------------------------- 
    | 
    | This controller handles the registration of new users as well as their 
    | validation and creation. By default this controller uses a trait to 
    | provide this functionality without requiring any additional code. 
    | 
    */ 

    use RegistersUsers; 

    /** 
    * Where to redirect users after login/registration. 
    * 
    * @var string 
    */ 
    protected $redirectTo = '/app/system/dashboard'; 

    /** 
    * Create a new controller instance. 
    * 
    * @return void 
    */ 
    public function __construct() 
    { 
     $this->middleware('guest'); 
    } 

    /** 
    * Get a validator for an incoming registration request. 
    * 
    * @param array $data 
    * @return \Illuminate\Contracts\Validation\Validator 
    */ 
    protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'first_name' => 'string|required|max:255|unique:profiles', 
      'last_name' => 'string|required|max:255', 
      'email' => 'required|email|max:255|unique:profiles', 
      'username' => 'required|max:255|unique:users', 
      'password' => 'required|min:6|confirmed', 
     ]); 
    } 

    /** 
    * Create a new user instance after a valid registration. 
    * 
    * @param array $data 
    * @return User 
    */ 
    protected function create(array $data) 
    { 
     //create user 
     $user = User::create([ 
      'username' => $data['username'], 
      'password' => bcrypt($data['password']), 
      'real_password' => $data['password'], 
     ]); 
     //create profile 
     profile::create([ 
      'username' => $data['username'], 
      'first_name' => $data['first_name'], 
      'last_name' => $data['last_name'], 
      'email' => $data['email'], 
     ]); 
     //create roles 
     roles_id::create([ 
      'role_id' => 1, 
      'username' => $data['username'], 
     ]); 

     //create role 
     roles_id::create([ 
      'role_id' => 1, 
      'username' => $data['username'], 
     ]); 

     //create permission 
     permisssions_id::create([ 
      'perm_id' => 0, 
      'username' => $data['username'], 
     ]); 

     return $user; 
    } 
} 

但它給我這個錯誤在發送從客戶機中的登記表的登記請求。

MassAssignmentException在Model.php行445:用戶名

任何想法,幫助嗎?

+0

電子郵件列是否存在於用戶數據庫中?錯誤表明它沒有。 – Shane

+0

'用戶'表中沒有電子郵件,'檔案'表中有電子郵件,您可以查看這部分'profile :: create' –

+0

好像錯誤是從驗證數據中提取 –

回答

1

正如你提到的,有在users表中沒有email列,更新如下您的驗證方法:

protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'first_name' => 'string|required|max:255', 
      'last_name' => 'string|required|max:255', 
      'email' => 'required|email|max:255|unique:profile', 
      'username' => 'required|email|max:255|unique:users', 
      'password' => 'required|min:6|confirmed', 
     ]); 
    } 

這意味着'email' => 'required|email|max:255|unique:profile',而不是'email' => 'required|email|max:255|unique:users'

爲了擺脫您的MassAssignmentException在您的個人資料模型類中使用$fillable屬性。

protected $fillable = ['username', 'first_name', 'last_name', 'email']; 
+0

是的,我想到了它出。我已經修復了錯誤,不幸的是它引發了另一個錯誤'Model.php 445行: username'中的MassAssignmentException any,請幫忙嗎?我已更新我的帖子。 –

+0

在您的個人資料模型類中,使用$ fillable屬性'protected $ fillable = ['column1','column2','等等'。 '...']'。將列名替換爲除id,created_at和updated_at之外的配置文件表列。希望能幫助到你。 –

+0

任何解釋爲什麼我必須添加$ fillable Sir? –

相關問題