php - Laravel:更新模型和相关模型
问题描述
我是 laravel 的新手,目前我正在尝试更新一些用户信息。
在我的代码中,我更新了用户表的用户名和电子邮件以及 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();
推荐阅读
- node.js - Nodejs EventLoop(带集群模块)与Golang调度器对比
- c# - 在 Web Api 2 中获取 HttpContext.Current.User.Identity.Name null 通过角度 4 登录
- javascript - 访问 React 类组件的返回变量
- c++ - 为什么 SFINAE 不选择 const-reference-taking 重载?
- mysql - Woocommerce 通过自定义查询获取产品
- c# - xsd.exe 的意外输出
- file - 批处理脚本:搜索子文件夹、查找文件、删除所有其他内容
- kubernetes - 重新启动主机后 Kubernetes 主节点已关闭
- php - 合并多个大型 API 响应的最佳方式
- android - 哪个广播接收器首先执行:动态还是静态?