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

Laravel如何保存多个关联模型?提交公司及联系人数据的实现方法

问题说明

用户提交的表单数据格式如下:

{
  "name": "Company Name1",
  "contacts": [ 
    {
      "name":"John Doe",
      "phone":"123123"
    },
    {
      "name":"John Doe 2",
      "phone":"123123"
    }
  ]
}

需求:用提交的name字段创建一条公司(Company)记录,再为contacts数组中的每个联系人创建一条关联到该公司的联系人记录,是否可以通过createMany类的方法实现该需求?

解答

完全可以通过createMany方法实现该需求,你找到的方案是正确的。
createMany是Laravel Eloquent关联关系提供的批量创建方法,在一对多关联上调用该方法时,会自动为每一条批量创建的子记录填充对应的外键字段(比如company_id),不需要手动处理关联逻辑。

之前执行失败的原因是表单漏传了必填字段,修复字段问题后,最终可运行的代码如下:

$arr = $request->safe()->only(['contacts']);
$company = Company::create($request->safe()->only(['name']));
$company->contacts()->createMany($arr['contacts']);

注意事项

  • 确保Contact模型的$fillable属性中已经配置了name、phone等需要批量赋值的字段,避免出现批量赋值错误
  • 上述代码使用safe()方法获取经过验证器校验的数据,建议提前在表单请求验证类中定义好name和contacts.*.name、contacts.*.phone的校验规则,保障数据合法性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:24:01