Назначение роли пользователя при регистрации в выдаче laravel - PullRequest
1 голос
/ 29 мая 2020

В моем приложении 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 Ответ

3 голосов
/ 29 мая 2020

Есть несколько вещей, которые вы, возможно, захотите рассмотреть.

1) ваша функция не будет выполняться дальше после оператора 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' как заполняемое в модели User .

...