在 laravel 问题中注册时分配用户角色



在我的 laravel 应用程序中,我正在尝试在注册时分配用户角色。以下是我的注册控制器

protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'last_name' => $data['last_name'],
'email' => $data['email'],
'mobile'=>$data['mobile'],
'username'=>$data['username'],
'password' => Hash::make($data['password']),
'propic'=>'user-pic.png',
'user_roles' =>'customer',
]);
$lastdata = DB::table('users')->orderBy('id', 'desc')->first();
$last_id=$lastdata->id;
$user= User::where('id','=',$last_id)->firstOrFail();
$user->assignRole('customer');
}

但是当我运行代码用户创建时,激活邮件已发送,但角色未分配! 我该如何解决这个问题,我哪里做错了?

您可能需要考虑一些事项。

1( 你的函数在 return 语句之后不会继续。您正在创建一个带有 return 语句的用户,因此下面的代码不会执行。我建议将返回对象存储到某个变量中。

// let's say
$user =  User::create([
'name' => $data['name'],
'last_name' => $data['last_name'],
'email' => $data['email'],
'mobile'=>$data['mobile'],
'username'=>$data['username'],
'password' => Hash::make($data['password']),
'propic'=>'user-pic.png',
'user_roles' =>'customer',
]);
// then you can simply get it's value by 
$user_id = $user->id; // you won't need to query last added row's value.

2( 如果用户角色未保存到您的数据库中,请检查您是否已将该"user_roles"字段指定为可填写到用户模型中。

最新更新