#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