Laravel 7.25 用户在laravel中注册后如何将用户信息添加到关联表

我正在Laravel 7.2中开发一个论坛项目,其中我有两个用户表:usersuser_centers

用户注册与关联表更新


注册功能与描述:

用户名与密码放在users表.
用户关联信息如:地址,电话,城市,等信息存储在user_centers表.
users表中注册存储凭据的用户时,我想在user_centers表中创建一条关联信息,该列具有在添加到users表时生成的相同user_id .

报错描述与解决:在我开发过程中更新用户关联表数据时一直报错,Trying to get property 'user_id' of non-object,用过很多方法如(update(),store(),create(),save(),DB::inster(sql原生操作))都还是报这个错误信息。经过分析发现不是数据操作的问题有个能是数据模型设置问题,于是在UserCenter模型中查看信息,发现没有将user_id添加到fillable属性以允许在[App\Models\UserCenter]上进行批量分配.

功能开发流程


1.用户关联模型
App/Models/UserCenter.php

protected $fillable = [
        'user_id'
    ];

2.注册控制器
App/Http/Controllers/Auth/RegisterController.php

<?php
.
use App\Models\User;
use App\Models\UserCenter;
.
.
.
class RegisterController extends Controller
{
.
.
.
    protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
        UserCenter::create([
            'user_id'=> $user->id,
        ]);
        return $user;
    }
}
注:在用户注册控制器中注册完成后可以调用,用户ID方法 $user->id,Auth::user()->id
阅读 90

Comments