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

Laravel下Voyager后台多对多关联商品存储时related_id为空问题求助

修复方案

1. 修正视图层代码

核心错误是将name属性错误写在<option>标签上,且多选下拉框未添加multiple属性,导致前端无法正常提交related_id数组到后端,是字段为null的根本原因。
修正后的代码:

<div class="form-group col-md-8">
   <label class="control-label">关联商品</label>
   <!-- name属性添加到select标签,同时加multiple支持多选 -->
   <select class="form-control chosen-select" name="related_id[]" multiple>
    @foreach($products as $product)
     <option class="form-control" value="{{$product->id}}"> {{$product->name}} </option>
    @endforeach
   </select>
 </div>

2. 修正控制器层代码

原代码循环判断条件错误,且无需手动操作中间表插入数据,直接调用Laravel多对多关联的原生方法即可:

if($data->save()) {
    // 使用sync方法批量写入关联数据,第二个参数传false可避免删除旧关联,按需调整
    $data->related()->sync($request->input('related_id', []));
            
    return response()->json([
        'success' => true,
        'last_insert_id' => $data->id,
        'related_id'    =>  $request->input('related_id'),
    ], 200);
}

3. 可选优化

你已经在Product模型中定义了规范的多对多关联,无需单独创建中间表RelatedProduct模型,无特殊需求可直接删除该冗余文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 15:24:02