роль не привязана к пользователю в пользовательской функции регистрации laravel в связи «многие ко многим» - PullRequest
0 голосов
/ 14 мая 2018

Вот пользовательский фрагмент кода регистрации Laravel, который я создал для пользователей для регистрации в моем приложении.

public function registration(Request $request)
{
    // validators

    $user = $this->create($request->all());

    $this->guard()->login($user);
    return response()->json(['status' => true, 'msg' => "Successfully registered"], 200);
}

protected function create(array $data)
{
    $user = User::create([
        'first_name' => $data['first_name'],
        'last_name'  => $data['last_name'],
        'email'      => $data['email'],
        'password'   => bcrypt($data['password']),
    ]);

    $user->roles()->attach(\App\Role::where('name', 'Subscriber')->first());
    return $user;
}

protected function guard()
{
    return Auth::guard();
}

Все по-прежнему работает отлично, за исключением того, что не назначает роли пользователю.Я попытался tinker создать пользователя и attach роль для пользователя.Это также работает в tinker.Модель

Role имеет отношение многие ко многим с моделью User.

1 Ответ

0 голосов
/ 14 мая 2018

Попробуйте разместить id моделей при присоединении моделей отношений, вы можете сделать что-то вроде:

protected function create(array $data)
{
    $user = User::create([
        'first_name' => $data['first_name'],
        'last_name'  => $data['last_name'],
        'email'      => $data['email'],
        'password'   => bcrypt($data['password']),
    ]);

    $role = \App\Role::where('name', 'Subscriber')->first();
    $user->roles()->attach($role->id);
    return $user;
}

Для справки см. Документация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...