@flafy4

Как создать и привязать профиль к новому пользователю?

Есть 2 таблица: users и profiles. В таблицу users попадают пользователи которые регистрируются с помощью стандартной системы атуентификации laravel - Auth. В таблице users есть столбец profile_id. То есть мне нужно что бы во время регистрации пользователя, вместе с ним создавался новый профиль(запись в таблице profiles) и id этой записи присваивалось столбцу profile_id в таблице users. Как такое можно реализовать? За ранее спасибо!
  • Вопрос задан
  • 636 просмотров
Решения вопроса 1
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
1. Сделать в модели Profile связь hasOne к модели User

function user(){
   $this->hasOne('App\User', 'profile_id', 'id');
}


2. Переназначить метод создания аккаунта в RegisterController
protected function create(array $data){
        $profile = Profile::create([
           'phone' => $data['phone'] // любые поля из post запроса регистрации
        ]);
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
            'profile_id' => $profile
        ]);
        // тут можете сделать еще что-то с user
        return $user;
}


3. Да в принципе все готово... Не забудьте сделать profile_id fillable в модели юзеров! :)

upd: Но по хорошему user_id должен быть в Profile, тогда решается так:
protected function create(array $data){
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
            'profile_id' => $profile
        ]);
        $user->profile()->create([
           // поля
        ]);
        return $user;
}

Не забывайте, разумеется, создать связь hasOne в модели User
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Не знаю как в ларавеле, обычно после создания пользователя все данные остаются в объекте, в частности он получает id, ничего не мешает взять этот id и создать новую запись в профайлах. Просто у вас телега впереди лошади, в профайлах должен быть user_id, а не в юзере profile_id.
Ответ написан
@Danbka
Не могу представить с какой целью необходимо разносить информацию о пользователю по двум таблицам (users и profiles). А главное зачем?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы