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

Laravel 8 API控制器存储JSON数组的简洁实现方案问询

Laravel 8 API 批量存储数组数据的简洁实现方案

前置配置

首先需要确保rawData模型开启对应字段的批量赋值权限,在模型文件中添加如下配置:

// app/Models/rawData.php
protected $fillable = ['a'];

注:Laravel会自动解析application/json类型的请求参数,$request->all()已经是解析后的数组结构,无需手动做JSON解码操作。


两种简洁实现方案

方案1:使用createMany(首选)

该方法是Eloquent提供的批量创建方法,会自动处理created_at/updated_at时间戳,同时会触发模型的creating/created等事件,完全替代原有循环逻辑,代码如下:

// 验证通过后直接调用即可
rawData::createMany($request->all());

方案2:使用insert(适合超大量数据插入)

如果插入的数据量较大,不需要触发模型事件,可以使用查询构造器的insert方法,一次性完成入库,性能远高于逐行保存。需要手动补充时间戳的话可以配合集合处理:

rawData::insert(
    collect($request->all())
        ->map(fn ($item) => [
            'a' => $item['a'],
            'created_at' => now(),
            'updated_at' => now()
        ])
        ->toArray()
);

原有代码问题说明

你原有循环代码存在变量名不匹配的错误:实例化模型后赋值给了$data变量,却调用了未定义的$newrawData->save(),运行时会报错,使用上述方案可以直接规避这类手写循环的低级错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:45:03