以下是发生错误之前我正在执行的操作
我正尝试在名为'role_users'的新表中为users
和roles
表中的用户分配角色。
角色.php模型
class Role extends Model{
public function users(){
return $this->belongsToMany('App\User','role_users', 'role_id', 'user_id');
}
}
用户名.php
class User extends Model implements Authenticatable
{
use \Illuminate\Auth\Authenticatable;
public function roles(){
return $this->belongsToMany('App\Role', 'role_users', 'user_id', 'role_id');
}
}
我从我的AccountController.php中不断收到此行中的错误
$roleuser = new User;
$user_superadmin = Role::where('role_desc', 'Superadmin')->first();
$roleuser->roles()->attach($user_superadmin); /*this line specifically*/
我有Integrity constraint violation: 1048 Column 'user_id' cannot be null (SQL: insert into 'role_users' ('role_id', 'user_id') values (1, ))
。users table
已经更新,user_id
已经保存到数据库。
有人能帮帮我吗?我一定是忽略了一些重要的东西。
3条答案
按热度按时间pprl5pva1#
这里的问题是,您没有将角色附加到任何现有用户,您只是运行:
创建未保存到数据库的用户对象。
你应该这样做:
或
这里也不要使用
$roleuser
变量,因为它显然是$user
zdwk9cvp2#
您不能将关系附加到不存在的用户。请先尝试创建用户:
或从DB中获取用户:
aamkag613#
我在使用Laravel 9时遇到了同样的问题。您应该在添加权限之前创建用户。
然后在最后执行操作保存用户