I\'m trying to make a profile page for my registered users. On this page the Auth\\User data will be displayed (Name, Email) but also extra profile information (city, countr
As noted in the comments on your question I believe the best answer here is to combine the two models into one User model.
However, if you want to create a relationship on your user when it is created you can modify the Registrar service.
The AuthenticatesAndRegistersUsers trait will use the registrar (located in app/Services/Registrar.php by default) to validate and register users.
You can just modify the create method in there to automatically create the profile relation at the same time:
public function create(array $data)
{
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
$user->profile()->save(new Profile);
return $user;
}
There are three options that come to my mind.
Why are you separating the user account from the profile? I can't think of a good reason to (not saying there isn't one, I just can't think of one). Combining the tables would save you database queries and completely resolve this issue. I think this would be the best option.
Create a listener on the User::created event.
User::created(function(User $user) {
$user->profile->save(Profile::create([... ]));
});
Create a user repository to manage all the data base querying. Then in the repository create method you can manually create the profile record and associate the two. Then use the repository in the Registrar instead of the Model directly