2016-07-07 36 views
1

我在想如何在我的表格中保存用戶選擇的列表用戶?如果用戶選擇第一個選項,則值將被插入到我的role_id中,值爲1,依此類推。如何使用一對多關係在Laravel中保存選定列表?

<div class = "form-group {{ $errors->has('role') ? ' has-error' : '' }}"> 

<label for = "role" class = "control-label">Role</label> 

<select class = "form-control" name = "role"> 

    <option selected disabled>Please select role</option> 
    <option value = "role1">Supplies Officer</option> 
    <option value = "role2">Admin Officer</option> 
    <option value = "role3">Attorney</option> 
    <option value = "role4">Chairman</option> 

</select> 

@if ($errors->has('role')) 
    <span class = "help-block">{{ $errors->first('role') }}</span> 
@endif 

樣品SQL:

INSERT INTO `users`(`role_id`, `email`, `username`) VALUES (1,'[email protected]','francis') 

我有一個表角色具有一對多的關係與用戶表。

enter image description here

角色表:我已經在這裏插入一個值。

roles Table

用戶(型號)

class User extends Model implements AuthenticatableContract 
{ 
use Authenticatable; 

protected $table = 'users'; 

protected $fillable = [ 
    'username', 
    'email', 
    'password', 
    'role_id', 
]; 

public function role() 
{ 
    return $this->belongsTo('Role'); 
} 
} 

角色(模型):

class Role extends Model 
{ 
protected $table = 'roles'; 

public function user() 
{ 
    return $this->hasMany('User'); 
} 
} 

控制器:

我還沒有這裏的任何想法我怎麼能插入或保存選定的列表。任何幫助將不勝感激!

public function postRegister(Request $request) 
{ 
    $this->validate($request, [ 
          //This will be unique in users table 
     'email' => 'required|unique:users|email|max:255', 
     'username' => 'required|unique:users|alpha|max:20', 
     'password' => 'required|min:6', 
     'role' => 'required', 
    ]); 

    $email = $request['email']; 
    $username = $request['username']; 
    $password = bcrypt($request['password']); 
    $role = $request['role']; 

    $user = new User(); 
    $user->email = $email; //Accessing properties of Model 
    $user->username = $username; 
    $user->password = $password; 


    $user->save(); 

} 
+0

爲什麼'$ user-> role_id = $ role'不適合你?我想你正在推翻這種關係。 – Devon

+0

@Devon我試過,但它說。完整性約束違規:1452無法添加或更新子行:外鍵約束失敗('onlinesystem'.'users',CONSTRAINT'users_role_id_foreign' FOREIGN KEY('role_id')REFERENCES'roles'('id') – Francisunoxx

+1

因爲你的表單值是'role1'而不是'1'..要麼刪除字符,要麼更改值 – Devon

回答

0

您將您的role_id傳遞給User對象。

$user->role_id = 1; 
$user->save(); 

現在您的角色已分配給您的用戶。您可以檢查您的SQL數據庫或在$ user變量上創建一個dd()。

dd($user); 

你可以指定它與雄辯,這是一個更好的方法。

$role = \Role::findOrFail($request['role_id']); 
$role->user()->assign($user)->push(); // This ligne assign the id of the Role Model into the User Model automaticly. 

在這種情況下,角色模型必須在用戶模型上具有belongsTo關係。

相關問題