You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Breeze中编辑用户时postal_code字段无法保存,需修改何处?

解决Laravel Breeze编辑用户时postal_code无法保存的问题

针对你遇到的问题,需要修改以下几个关键位置:

1. 调整ProfileController的验证与更新逻辑

打开app/Http/Controllers/ProfileController.php,找到updateProfileInformation方法:

  • 先在验证规则里加上postal_code的校验规则,根据业务需求设置(比如必填、长度限制):
$request->validate([
    'name' => ['required', 'string', 'max:255'],
    'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->ignore($request->user()->id)],
    'postal_code' => ['required', 'string', 'max:20'], // 按需调整规则
]);
  • 然后在更新用户数据的代码块里,把postal_code加入要更新的字段数组:
$request->user()->fill([
    'name' => $request->name,
    'email' => $request->email,
    'postal_code' => $request->postal_code, // 新增这行,将提交的字段存入数据库
])->save();

2. 确认User模型的可填充字段包含postal_code

虽然注册时能正常存储,但还是要检查app/Models/User.php的$fillable数组,确保postal_code在里面:

protected $fillable = [
    'name',
    'email',
    'password',
    'postal_code', // 必须存在,否则无法通过fill方法批量赋值
];

3. 确保前端能获取到最新的postal_code值

编辑完成后表单显示旧值,大概率是前端没拿到更新后的用户数据:

  • 检查ProfileController的edit方法,默认返回的auth()->user()会包含所有未隐藏的字段,只要User模型里没把postal_code加入$hidden数组,就能正常返回
  • 如果是Inertia版本的Breeze,确认页面props里的user对象包含postal_code,这样表单初始化时才能拿到最新值

4. 验证前端表单的绑定是否正确

最后确认UpdateProfileInformationForm.vue里的输入框绑定没问题:

  • 输入框要正确绑定表单的postal_code字段:
<input
    type="text"
    v-model="form.postal_code"
    class="..."
/>
  • 表单初始化时,要从用户数据里同步postal_code的值,比如:
// 示例:在组件初始化时赋值
this.form = {
    name: this.user.name,
    email: this.user.email,
    postal_code: this.user.postal_code,
};

内容的提问来源于stack exchange,提问作者Mayor of the Plattenbaus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 05:40:00