Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法将值NULL插入列';用户id';,表';dbo.role_user';;列不允许空值_Php_Laravel 5_Rbac - Fatal编程技术网

Php 无法将值NULL插入列';用户id';,表';dbo.role_user';;列不允许空值

Php 无法将值NULL插入列';用户id';,表';dbo.role_user';;列不允许空值,php,laravel-5,rbac,Php,Laravel 5,Rbac,我正在使用Laravel 5.0中的Zizaco/Trust来应用RBAC,我有以下错误: 无法将值NULL插入表“dbo.role_user”的“user_id”列中;列不允许空值。插入失败。(SQL:在[role\u user]([role\u id],[user\u id])值(2,) 我按照所有步骤实现了委托,在我的User.phpstore方法中,我有: public function store(UserRequest $request) { $user = new User

我正在使用Laravel 5.0中的Zizaco/Trust来应用RBAC,我有以下错误:

无法将值NULL插入表“dbo.role_user”的“user_id”列中;列不允许空值。插入失败。(SQL:在[role\u user]([role\u id],[user\u id])值(2,)

我按照所有步骤实现了委托,在我的
User.php
store方法中,我有:

public function store(UserRequest $request)
{
    $user = new User();
    $user->create($request->all());
    $roles=$request->get('role_id');
    $user->roles->attach($roles);
    return redirect('users');
}
我想知道如何解决这个问题。非常感谢您的帮助。

其他信息: 委托需要一个用户ID才能将角色分配给用户。 创建用户时没有用户ID,因为创建用户时将创建用户ID。 因此,在创建用户之后,您需要首先检索该用户,然后才能将其分配给角色

此处:请参阅此URL中的第二个代码块:。 他们首先接收用户,然后将其分配给角色

首先创建如下用户:

User::create($request->all());
$User = User::where('username', '=', $request->username)->first();
$User->roles()->attach($request->roleid);//parenthesis missing
然后像这样抓取新创建的用户:

User::create($request->all());
$User = User::where('username', '=', $request->username)->first();
$User->roles()->attach($request->roleid);//parenthesis missing
然后将用户分配到如下角色:

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');
}

这听起来可能很傻,但是您的用户表列
User\u id
是否配置为自动递增?是的。问题在于透视表中,
id
不知何故没有传递到透视表的
user\u id
是否已验证正在创建用户?请尝试打印($user)。我在数据库中进行了检查,用户已创建