无法将值 NULL 插入列 'user_id'、table 'dbo.role_user';列不允许空值

Cannot insert the value NULL into column 'user_id', table 'dbo.role_user'; column does not allow nulls

我在 Laravel 5.0 中使用 Zizaco/Entrust 来应用 RBAC,但出现以下错误:

Cannot insert the value NULL into column 'user_id', table 'dbo.role_user'; column does not allow nulls. INSERT fails. (SQL: insert into [role_user] ([role_id], [user_id]) values (2, ))

我按照所有步骤实施委托,在我的 User.php 存储方法中我有:

public function store(UserRequest $request)
{
    $user = new User();
    $user->create($request->all());
    $roles=$request->get('role_id');
    $user->roles->attach($roles);
    return redirect('users');
}

我想知道如何解决这个问题。感谢所有帮助。

额外信息: Entrust 需要一个用户 ID 才能将角色分配给用户。 当您创建用户时,没有用户标识,因为在您创建用户时将创建一个用户标识。 因此,在创建用户后,您需要先检索用户,然后才能将其分配给角色。

此处:查看此 URL 中的第二个代码块:Entrust Github。 他们先接收用户,然后将其分配给角色。

首先像这样创建用户:

User::create($request->all());

然后像这样抓取新创建的用户:

$User = User::where('username', '=', $request->username)->first();

然后像这样将用户分配给角色:

$User->roles()->attach($request->roleid);//parenthesis missing

总计:

public function store(UserRequest $request)
{
    User::create($request->all());

    $User = User::where('username', '=', $request->username)->first();

    $User->roles()->attach($request->roleid);

    return redirect('users');
}