Add the inserted id to the pivot table

299 Views Asked by At

I have a users, items, user_item tables. I need to populate the user_item table with a user_id and item_id when a user is created.

so far, I have a basic registration function

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);
} 

So far it saves only to the users table ofcourse. I've looked at some documentations on using attach(), however, I got stuck on this one..

In the register function, i added a $item array:

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

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

Also, what is role()? is it a built-in laravel function?

Note that I haven't tried running this function since I got stuck on these problems. So I don't event know if it's gonna work.

Anyone help me on this one? I'm a laravel newbie and got really confused on the documentations.

1

There are 1 best solutions below

0
On

the method create return the model it self after loading it's attributes from db, so when you want the user id just use $user->id after create() method.

for the default permission that shipped with laravel it is spatie/laravel-permission

and to assign role to a user you can use:

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