2016-08-29 4 views
1

Так я работаю с Laravel 5.2 и Entrust пакета для управления ролями/разрешенияLaravel 5,2, Entrust, «role_user» таблица не обновляется

Я строю функцию, которая должна добавить пользователя в «пользователи» таблица одновременно добавляет отношение к таблице «role_user». Я передаю массив из multi_select и затем привязываю его к пользователю.

Он прекрасно добавляет пользователя в таблицу «пользователей», но не добавляет отношения в таблицу «role_user». Мне хотелось бы помочь понять, что не так.

Часть формы в вопросе:

{!! Form::select('roles[]', $roles, null, ['multiple' => 'multiple', 'class' => 'select-width-100 form-control roles']) !!} 

Моя функция StoreUser

public function StoreUser(Request $request) 
{ 

    $input = Request::all(); 
    $user = New User; 
    $user->name = $input['username']; 
    $user->email = $input['email']; 
    $user->password = Hash::make($input['password']); 

    $roles = $input['roles']; 
    foreach ($roles as $role) 
    { 
     $role_id = Role::where('name', $role)->first(); 
     $user->roles()->attach($role_id); 
    } 
    $user->save(); 
    return redirect('/settings/users'); 

} 

Ниже мой User.php Модель

<?php 

namespace App; 
use Zizaco\Entrust\Traits\EntrustUserTrait; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 

    use EntrustUserTrait; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'name', 'email', 'password', 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 
} 
+0

Если у вас есть ответ, пожалуйста, напишите его ниже в качестве ответа, так что вы может отметить это «принято». – meagar

ответ

0

Я сумел исправить это. я должен искать «ид» вместо «имя», так это:

foreach ($roles as $role) 
{ 
    $role_id = Role::where('name', $role)->first(); 
    $user->roles()->attach($role_id); 
} 

Должно быть так:

foreach ($roles as $role) 
     { 
      $role_id = Role::where('id', $role)->first(); 
      $user->roles()->attach($role_id); 
     }