[英]Laravel 5.2, Entrust, 'role_user' table not updating
所以我正在使用Laravel 5.2和Entrust包來管理角色/權限
我正在構建一個函數,該函數應該將用戶添加到'users'表,同時添加與'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',
];
}
我管理修復它。 我應該尋找'id'而不是'name',所以這個:
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.