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

如何获取数组值?Laravel视图访问数组属性报错求助

解决视图中访问数组属性报错:Trying to get property 'message' of non-object

嘿,这个问题我日常开发里碰过好多次,本质就是你在视图里用了对象属性访问的语法(->),但实际上控制器传过来的是数组,或者变量本身根本不是一个有效的对象(比如是null)。下面给你拆解几种常见场景和解决办法:

第一步:先搞清楚你传递的变量到底是什么

先在视图里临时加一行代码,打印出控制器传过来的变量,确认它的类型和结构:

{{ dd($yourVariableName) }} <!-- 把这里的yourVariableName换成你实际用的变量名 -->

运行后你就能看到它是数组、对象还是null,以及有没有message这个键/属性。

常见场景及解决方案

场景1:控制器传的是数组,视图误用了对象语法

比如控制器里是这么传数据的:

// 控制器代码
return view('message', ['notification' => ['message' => '您有一条新消息']]);

这时候$notification是数组,视图里不能用$notification->message,得改成数组的访问方式:

{{ $notification['message'] }}

场景2:控制器传的是模型/对象,但实际是null

比如你想从数据库取一条消息,但对应的ID不存在,查询返回了null:

// 控制器代码
$message = Message::find($invalidId); // 找不到数据时$message是null
return view('message', ['message' => $message]);

这时候视图里直接访问$message->message就会报错,因为null不是对象。解决办法有两种:

  • 先判断变量是否存在再访问:
    @if($message)
        {{ $message->message }}
    @else
        暂无消息
    @endif
    
  • 用Laravel的可选链式操作符(Laravel 8及以上版本支持),自动处理null的情况:
    {{ $message?->message }}
    

场景3:变量名不匹配

检查控制器里传递的变量名和视图里用的是否完全一致,比如控制器传的是$msg,视图里写成了$message,这时候$message是null,自然会报“非对象”的错误。

内容的提问来源于stack exchange,提问作者ICP

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:12:49