Php 无法将值NULL插入列';用户id';,表';dbo.role_user';;列不允许空值
我正在使用Laravel 5.0中的Zizaco/Trust来应用RBAC,我有以下错误: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
无法将值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)。我在数据库中进行了检查,用户已创建