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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:51:24