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

Laravel如何用Eloquent无需预取值向JSON列内数组插入元素?

你可以通过MySQL原生的JSON函数配合Eloquent的DB::raw实现单语句更新,不需要提前读取JSON字段的值,全程只有一次数据库写操作。
注意:你提到的JSON_ARRAY_APPEND是往数组尾部追加元素,要实现头部插入,应该用JSON_ARRAY_INSERT指定插入到数组索引0的位置即可。

实现代码

首先确保你的User模型已经正确配置了JSON字段的类型转换:

// App/Models/User.php
protected $casts = [
    'parameters' => 'array',
];

然后执行更新操作:

use Illuminate\Support\Facades\DB;

User::first()->update([
    'parameters' => DB::raw("JSON_ARRAY_INSERT(parameters, '$.pins[0]', 2)")
]);

补充说明

  • 如果需要往pins数组尾部追加元素,才需要用到你提到的JSON_ARRAY_APPEND,写法如下:
    DB::raw("JSON_ARRAY_APPEND(parameters, '$.pins', 2)")
    
  • 该写法仅在使用MySQL作为数据库时生效,兼容MySQL 5.7及以上版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:21:00