簡體   English   中英

Laravel 5.2,Entrust,'role_user'表沒有更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM