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

Laravel从API获取数组数据存入数据库时遇属性读取错误

问题解决:Laravel存储API数组数据报错“尝试对整数读取属性'invoice'”

错误原因

  1. 遍历对象错误:你的$responses是单个API响应的关联数组(包含status、message、consignment三个键),而非多个数据项的集合。foreach ($responses as $response)会依次遍历出200、成功提示字符串、consignment数组,当遍历到整数200时,尝试读取$response->invoice就会触发“对整数读取属性”的错误。
  2. 数据访问方式错误:API返回的是数组结构,你却用了对象属性访问符->,正确的数组访问应该用['键名'],或者先将数组转为对象。

正确代码实现

方案一:直接使用数组索引访问(推荐)

// 提取出需要的consignment数据
$consignment = $responses['consignment'];

$curDatains = new CurrierData();
$curDatains->orderId = 1;
$curDatains->orderInvoice = $consignment['invoice'];
$curDatains->consignment_id = $consignment['consignment_id'];
$curDatains->tracking_code = $consignment['tracking_code'];
$curDatains->status = $consignment['status'];
$curDatains->save();

方案二:将数组转为对象后访问

如果习惯使用对象属性的方式访问,可以先把consignment数组转为对象:

$consignment = (object)$responses['consignment'];

$curDatains = new CurrierData();
$curDatains->orderId = 1;
$curDatains->orderInvoice = $consignment->invoice;
$curDatains->consignment_id = $consignment->consignment_id;
$curDatains->tracking_code = $consignment->tracking_code;
$curDatains->status = $consignment->status;
$curDatains->save();

补充说明

如果后续API会返回多个consignment的集合(比如consignment是数组数组),再考虑使用foreach遍历,但当前场景下单个响应只需要提取consignment字段即可。

内容的提问来源于stack exchange,提问作者Md. Shiam Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:48:09