执行用户密码修改方法报错:Attempt to read property 'new_password' on array
解决「Attempt to read property "new_password" on array」报错问题
问题原因
从你提供的dd($validations)输出能明确看到,$validations是一个关联数组,但你在代码里误用了对象的属性访问语法$validations->new_password,这直接导致了该报错。
修正方案
把数组的属性访问方式改为下标访问,同时可以优化代码避免重复查询数据库:
修正后的完整代码:
public function updatePassword(ChangePasswordRequest $request) { $user = Auth::user(); $validations = $request->validated(); // 用数组下标访问new_password字段,直接使用已获取的用户实例更新 $user->update(['password' => Hash::make($validations['new_password'])]); return redirect('change_password')->with('success-update-password', "{$user->name} changed your password successfully."); }
关键修改点
- 将
$validations->new_password替换为$validations['new_password'],适配关联数组的访问规则 - 直接使用
Auth::user()返回的用户实例调用update方法,无需再通过User::find(Auth::user()->id)重复查询数据库 - 修正了提示文本里的拼写错误
sucess为success(提升文本规范性)
内容的提问来源于stack exchange,提问作者Yagatekimi
相关产品推荐
相关产品推荐

