users表,用户表
roles表,角色表
role_users,用户和角色的关系表
laravel的表名必须复数
命令行创建model,role和user
php artisan make:model User
php artisan make:model role
后跟
-m
或--migration
创建迁移文件-f
或--factory
创建模型工厂-c
或--controller
创建资源控制器-r
或--resource
创建 RESTful 控制器资源(带有 index、create、store、show、edit、update 和 destroy 方法)
models中
role需要定义跟user的关系
public function users()
{
return $this->belongsToMany(User::class, 'role_users', 'role_id', 'user_id');
}
user需要定义跟role 关系
public function roles()
{
return $this->belongsToMany(Role::class, 'role_users', 'user_id', 'role_id');
}
在app/http/controllers/auth/RegisterController.php中
对register进行修改
public function register(Request $request)
{
// 开始记录注册过程日志
/*
Log::info('User registration started.', [
'ip_address' => $request->ip(),
'user_agent' => $request->userAgent(),
]);
*/
// 验证用户输入
$this->validator($request->all())->validate();
// 创建用户
$user = $this->create($request->all());
// 获取角色ID为2的角色实例
$defaultRole = Role::find(2);
// 如果角色存在,则将其分配给新用户
if ($defaultRole) {
$user->roles()->attach($defaultRole);
}
return redirect()->route('login');
}
重点是,荣国role::find(2)找到需要的默认role记录。
判断是否有这条记录。然后$user对roles进行关联,通过attach确认关联的是那条记录。