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

问题描述 投票:0回答:1

在我的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');
    }

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

php mysql registration roles laravel-6
1个回答
0
投票

您可能要考虑几件事。

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”字段分配为可填充到用户模型中。

© www.soinside.com 2019 - 2024. All rights reserved.