在我的laravel应用程序中,我试图在注册时分配用户角色。以下是我的RegistrationController
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”字段分配为可填充到用户模型中。