Laravel中获取对象/数组属性时赋值变量报错求助
问题排查与解决
核心问题分析
你代码里的关键错误是对Eloquent模型对象执行了json_decode:
ListTypeImage::find($id)返回的是Laravel Eloquent模型实例(对象),并非JSON字符串。json_decode()仅能处理字符串类型输入,传入对象时会直接返回null,这就是后续报错“Trying to get property 'image' of non-object”和“Trying to access array offset on value of type null”的根源。
修复方案
直接移除多余的json_decode调用,Eloquent模型本身支持直接访问属性:
private function getImageOfSharedList($id) { // 直接获取模型,无需json_decode $imageModel = ListTypeImage::find($id); // 处理模型不存在的情况,避免报错 if (!$imageModel) { return null; // 或者返回你的默认图片路径 } return $imageModel->image; } $image = $this->getImageOfSharedList($v->list_image_id);
可选优化
如果希望确保$id对应的记录一定存在,可以使用findOrFail(),当记录不存在时会抛出ModelNotFoundException(可全局捕获该异常做统一处理):
private function getImageOfSharedList($id) { $imageModel = ListTypeImage::findOrFail($id); return $imageModel->image; }
内容的提问来源于stack exchange,提问作者Vin Parker
相关产品推荐
相关产品推荐

