Php Laravel:更新模型和相关模型

Php Laravel:更新模型和相关模型,php,database,laravel,Php,Database,Laravel,我是拉威尔的新手,目前我正在尝试更新一些用户信息 在我的代码中,我更新了to user表的用户名和电子邮件以及user_info表中的用户信息 它可以工作,但我觉得它可以在更短的代码中完成 此外,每次更新user_info表时,都会插入一个新行,而不是更新当前行 public function update(Request $request, $id) { $data = $request->validate([ 'name' => '

我是拉威尔的新手,目前我正在尝试更新一些用户信息

在我的代码中,我更新了to user表的用户名和电子邮件以及user_info表中的用户信息

它可以工作,但我觉得它可以在更短的代码中完成

此外,每次更新user_info表时,都会插入一个新行,而不是更新当前行

public function update(Request $request, $id)
    {
        $data = $request->validate([
            'name' => 'required',
            'email' => 'required',
            'firstName' => 'required',
            'lastName' => 'required',
            'phone' => 'required',
            'cityProvince' => 'required',
            'zipPostalCode' => 'required',
        ]);

        $user = User::find($id);

        $user->name = $data['name'];
        $user->email = $data['email'];

        $user->save();

        $userInfo = new UserInfo([
            'first_name' => $data['firstName'],
            'last_name' => $data['lastName'],
            'phone' => $data['phone'],
            'city_province' => $data['cityProvince'],
            'zip_postalcode' => $data['zipPostalCode'],
        ]);

        $user->userInfo()->save($userInfo);

        return redirect()->route('settings.index');
    }

Laravel具有内置功能,您可以检查

您可以使用下面的代码,它将检查记录是否存在,然后更新,否则将插入新记录

$uinfo = UserInfo::firstOrNew([
               'user_id' => $user->id,
         ]);
$uinfo->first_name = $data['firstName'];
$uinfo->last_name = $data['lastName'];
$uinfo->phone => $data['phone'];
$uinfo->city_province => $data['cityProvince'];
$uinfo->zip_postalcode => $data['zipPostalCode'];
$uinfo->save();

Laravel具有内置功能,您可以检查

您可以使用下面的代码,它将检查记录是否存在,然后更新,否则将插入新记录

$uinfo = UserInfo::firstOrNew([
               'user_id' => $user->id,
         ]);
$uinfo->first_name = $data['firstName'];
$uinfo->last_name = $data['lastName'];
$uinfo->phone => $data['phone'];
$uinfo->city_province => $data['cityProvince'];
$uinfo->zip_postalcode => $data['zipPostalCode'];
$uinfo->save();

newuserinfo
您正在启动新用户信息如何更新用户表。您是否使用相同的函数?映射数组中的数据
$userInfo=['first\u name'=>$data['firstName'],…]
并使用更新方法
$user->userInfo()->update($userInfo)在可填充数组中需要该字段model@porloscerrosψ,如果我尝试此操作,数据将不会保存,但不会出现错误。
new UserInfo
您正在启动new user info如何更新用户表。您是否使用相同的函数?映射数组中的数据
$userInfo=['first\u name'=>$data['firstName'],…]
并使用更新方法
$user->userInfo()->update($userInfo)在可填充数组中需要该字段model@porloscerrosψ,如果我尝试此操作,数据将不会保存,但没有错误。嗯,如果我尝试此操作,我将得到一个SQLSTATE[23502]:非空冲突:7错误:列“user\u id”中的空值在第一个\u name之前添加
$uinfo->user\u id=$user->id
。嗯,如果我尝试此操作,我将得到一个SQLSTATE[23502]:非空冲突:7错误:列“user\u id”中的空值在第一个\u名称之前添加
$uinfo->user\u id=$user->id