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

Laravel 5.5控制器update函数报错:Attempt to assign property of non-object

解决Laravel 5.5控制器update函数中“Attempt to assign property of non-object”错误

这个错误的原因很清晰:你把$data初始化成了数组($data = array();),但后续却用了对象属性赋值的语法($data->firstName)——数组是不能通过->来访问元素的,这就导致了“试图给非对象赋值属性”的报错。下面给你两种简单的修复方案:

方案一:使用数组赋值(推荐,符合Laravel常规用法)

直接把对象赋值语法改成数组下标赋值即可,因为Laravel的update()方法本身就支持接收数组参数:

public function update(Request $request, $id=1){ 
    $data = []; // 和array()效果一致,更简洁的写法
    $data['firstName'] = $request->get('firstName'); 
    $data['lastName'] = $request->get('lastName'); 
    $data['email'] = $request->get('email'); 
    $data['company'] = $request->get('company'); 
    $data['website'] = $request->get('website'); 

    UserAdmin::where('id', Auth::user()->id)->update($data); 

    return redirect('administrator/myprofile'); 
}

更高效的简化写法:

可以直接用$request->only()快速提取需要的字段,省去手动逐个赋值的步骤:

public function update(Request $request, $id=1){ 
    // 直接获取指定字段的请求值,返回结果就是数组
    $data = $request->only(['firstName', 'lastName', 'email', 'company', 'website']);

    UserAdmin::where('id', Auth::user()->id)->update($data); 

    return redirect('administrator/myprofile'); 
}

方案二:改用对象赋值(不推荐,多此一举但可解决问题)

如果你坚持想用对象赋值的语法,需要先把$data初始化为一个对象,再转成数组传给update()方法(因为update()不支持直接接收对象参数):

public function update(Request $request, $id=1){ 
    $data = new \stdClass(); 
    $data->firstName = $request->get('firstName'); 
    $data->lastName = $request->get('lastName'); 
    $data->email = $request->get('email'); 
    $data->company = $request->get('company'); 
    $data->website = $request->get('website'); 

    // 将对象强制转为数组后传入update方法
    UserAdmin::where('id', Auth::user()->id)->update((array)$data); 

    return redirect('administrator/myprofile'); 
}

额外注意事项:

要确保你的UserAdmin模型已经设置了$fillable属性,允许对这些字段进行批量赋值,否则会触发批量赋值错误:

// 在UserAdmin模型文件中添加以下代码
protected $fillable = ['firstName', 'lastName', 'email', 'company', 'website'];

内容的提问来源于stack exchange,提问作者Niladri Banerjee - Uttarpara

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:34:27