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

在Laravel框架中如何将JSON对象数据存储到MySQL数据库

实现步骤

第一步:创建对应数据表的Eloquent模型

先在app/Models目录下创建Name.php模型文件,代码如下:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Name extends Model
{
    // 开放name字段的批量赋值权限
    protected $fillable = ['name'];
    // 显式指定对应数据表,符合命名规范的情况下可以省略
    protected $table = 'names';
}

第二步:修改MainController的data方法

替换原有控制器逻辑,加入参数验证、批量插入逻辑,修改后代码如下:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Name; // 引入Name模型
use Illuminate\Support\Facades\Validator; // 引入验证器

class MainController extends Controller
{
    function data(Request $request)
    {
        // 验证提交的参数格式是否符合要求
        $validator = Validator::make($request->all(), [
            '*.name' => 'required|string|max:255'
        ]);

        if ($validator->fails()) {
            return response()->json([
                'code' => 400,
                'msg' => '参数格式错误',
                'errors' => $validator->errors()
            ], 400);
        }

        // 格式化插入数据,自动填充时间字段
        $insertData = collect($request->all())->map(function ($item) {
            return [
                'name' => $item['name'],
                'created_at' => now(),
                'updated_at' => now()
            ];
        })->toArray();

        // 批量插入数据,性能远高于循环单条插入
        Name::insert($insertData);

        return response()->json([
            'code' => 200,
            'msg' => '数据批量保存成功',
            'save_count' => count($insertData)
        ]);
    }
}

第三步:AJAX请求注意事项

  • Laravel POST路由默认开启CSRF校验,需要在AJAX请求头中携带X-CSRF-TOKEN参数,值可以从页面的csrf-tokenmeta标签中获取,示例JS代码如下:
// 页面meta标签提前写入:<meta name="csrf-token" content="{{ csrf_token() }}">
$.ajax({
    url: 'http://127.0.0.1:8000/data',
    type: 'POST',
    contentType: 'application/json',
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    data: JSON.stringify(/* 你需要提交的JSON数组 */),
    success: function(res) {
        console.log(res);
    },
    error: function(err) {
        console.error(err);
    }
});
  • 如果是跨域请求,需要额外配置Laravel的CORS跨域中间件放行该接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:06:04