Добавьте вставленный идентификатор в сводную таблицу

#laravel #eloquent #eloquent-relationship

#laravel #красноречивый #красноречивый-связь

Вопрос:

У меня есть users items user_item таблицы , ,. Мне нужно заполнить user_item таблицу user_id и item_id при создании пользователя.

пока у меня есть базовая функция регистрации

 public function register(Request $request) {
    $user = User::create([
        'name' => $request->name,
        'user_type' => $request->user_type,
        'email' => $request->email,
        'password' => bcrypt($request->password)
      ]);
      $token = auth()->login($user);

      return $this->respondWithToken($token);
} 
  

Пока он сохраняется только в users таблице, конечно.
Я просмотрел некоторые документы по использованию attach() , однако я застрял на этом..

В register функцию я добавил массив $item:

 $item = Item::create([
    'user_id' => !!!!, -> How do I get the id of the inserted user
    'instrument_id' => $request->instrument_id
]);

$user->role()->attach($item)
  

Кроме того, что такое role() ? это встроенная функция laravel?

Обратите внимание, что я не пробовал запускать эту функцию, так как застрял в этих проблемах. Так что я не знаю, сработает ли это.

Кто-нибудь поможет мне в этом? Я новичок в laravel и очень запутался в документации.

Ответ №1:

метод create возвращает модель самостоятельно после загрузки ее атрибутов из базы данных, поэтому, когда вам нужен идентификатор пользователя, просто используйте $user->id create() метод after .

для разрешения по умолчанию, поставляемого с laravel, это spatie / laravel-permission

и чтобы назначить роль пользователю, вы можете использовать:

 $user->assignRole('writer');  // just set role name