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

Laravel开发REST API时如何向MySQL数据库存入数组格式数据

Laravel 数组格式商品账单数据入库实现步骤

1. 修正数据库迁移文件

首先根据你使用的数据库调整字段类型:

  • 若使用MySQL等不支持原生数组类型的数据库,将productinvoice字段类型改为json
  • 若使用PostgreSQL等支持原生数组的数据库,可保留array类型
// 2021_09_25_075455_create_productdetails_table.php
public function up()
{
    Schema::create('productdetails', function (Blueprint $table) {
        $table->id();
        $table->string('productname');
        $table->string('productid');
        $table->string('productdescription');
        $table->string('productimage'); // 按$fillable配置补全缺失的字段
        $table->json('productinvoice'); // 替换原array类型,适配绝大多数数据库场景
        $table->timestamps();
    });
}

修改完成后执行迁移命令:php artisan migrate:fresh(注意该命令会清空现有数据,仅测试环境使用,生产环境请新建迁移文件修改字段)

2. 给模型添加数组类型转换

Laravel 提供了内置的类型转换功能,会自动完成PHP数组与数据库JSON/array字段的双向转换,不需要手动做json_encode/json_decode处理。
在productdetails模型中添加$casts属性:

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class productdetails extends Model
{
    use HasFactory;
    protected $fillable = ['productname', 'productid', 'productdescription', 'productimage', 'productinvoice'];
    // 新增类型转换配置
    protected $casts = [
        'productinvoice' => 'array',
    ];
}

3. 调整控制器验证规则

因为productinvoice是数组类型,你可以根据需要补充数组内部字段的验证规则:

// ProductdetailsController.php 的 store 方法中
public function store(Request $request)
{
    $request->validate([
        'productname' => 'required',
        'productid' => 'required',
        'productdescription' => 'required',
        'productimage' => 'required',
        'productinvoice' => 'required|array', // 声明为数组类型
        // 可选:验证数组内每个子项的字段规则
        'productinvoice.*.productquantity' => 'required|numeric',
        'productinvoice.*.productprice' => 'required|numeric',
        'productinvoice.*.productgst' => 'required|numeric',
        'productinvoice.*.productname' => 'required|string',
    ]);
    return productdetails::create($request->all());
}

修改完成后即可正常提交数组格式的productinvoice数据,入库和读取都会自动处理格式转换:

  • 提交时直接传数组结构即可,Laravel会自动转成JSON存入数据库
  • 读取数据时,productinvoice字段会自动转为PHP数组,可直接遍历操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:36:08