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

Laravel调用attach向order_service中间表插数据报Undefined offset:0错误

错误原因
  • 核心问题是前后端参数名不匹配:前端Blade页面中数量输入框的name属性为qty[],提交的请求参数名为qty,但控制器中你使用$request->input('quantities', [])获取数量,quantities参数不存在,所以$quantities是空数组,访问$quantities[$service]时就会触发索引未定义错误。
  • 额外需要注意:你提到的中间表名order_serrvice存在拼写错误,正确应为order_service,如果模型关联定义中也使用了错误名称需要同步修正。
修复方案

你可以任选以下任意一种方案修改,保持前后端参数名一致即可:

方案1:修改控制器参数获取逻辑(更推荐)

把控制器中获取数量的代码改为匹配前端的qty参数,同时可以把for循环改为foreach遍历,避免数组长度不一致引发的其他错误:

$order = Order::create($data);
$services = $request->input('services', []);
// 改为获取qty参数
$quantities = $request->input('qty', []);
// 用foreach遍历更安全
foreach ($services as $index => $serviceId) {
    if ($serviceId != '' && isset($quantities[$index])) {
        $order->services()->attach($serviceId, ['quantity' => $quantities[$index]]);
    }
}

方案2:修改前端Blade代码

把Blade页面中数量输入框的name属性改为和后端一致的quantities[]:

<td><input type="number" name='quantities[]' placeholder='Enter Qty' class="form-control qty" step="0" min="0"/></td>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:36:04