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

Laravel中$meal的id获取报错:数组与对象访问方式冲突排查

问题分析与解决方案

核心问题是你的$meal数据类型不统一——部分是Recipe模型实例,部分是包含Recipe数据的数组,这就导致你用$meal->id时,数组类型的$meal会报属性读取错误;用$meal['id']时,模型对象类型的$meal会报数组键不存在错误。

快速解决方式

直接在获取id前判断数据类型,适配两种场景:

// 方式1:显式判断类型
if (is_object($meal)) {
    $id = $meal->id;
} elseif (is_array($meal)) {
    // 根据实际数组结构调整,若数组是一维则取['id'],是二维则取[0]['id']
    $id = $meal['id'] ?? $meal[0]['id'] ?? null;
}

// 方式2:统一转成数组后处理
$mealData = is_object($meal) ? $meal->toArray() : $meal;
$id = $mealData['id'] ?? $mealData[0]['id'] ?? null;

根源修复建议

找到生成mealPlan数组的代码,排查为什么会同时产出模型对象和数组:

  • 检查是否部分查询用了get()(返回集合,转数组后是二维数组),部分用了first()(返回单个模型对象);
  • 确认是否有手动组装数组的逻辑,存在“直接塞模型对象”和“转成数组后塞进去”两种操作;
    统一输出格式,比如全部转成数组,或者全部保留模型对象,从根源避免类型混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:02:32