Laravel 向 json 列中的数组添加一个元素

Posted

技术标签:

【中文标题】Laravel 向 json 列中的数组添加一个元素【英文标题】:Laravel add an element to array inside a json column 【发布时间】:2021-09-15 01:31:47 【问题描述】:

假设我们有一个用户,其参数字段如下:

User::first()->parameters
=> [
     "pins" => [
       1,
     ],
   ]

现在我想添加另一个图钉来获得这样的效果:

User::first()->parameters['pins']
=> [
     2,
     1,
   ]

目前我正在使用以下查询:

User::first()->update(['parameters' => ['pins' => array_merge([2], User::first()->parameters['pins'])]])

我想知道是否有任何 Eloquent 方法可以在不先获取引脚的情况下做到这一点(我的意思是没有 User::first()->parameters['pins'])。因为mysql支持JSON_ARRAY_APPEND()

【问题讨论】:

【参考方案1】:

这是更新字段数组的唯一方法。

为了更好,您可以使用 one to many 表命名,如 user_parameters 并使用类似 $user->parameter()->create() 的东西使用 eloquent 关系,插入新值而不获取旧数组。

【讨论】:

以上是关于Laravel 向 json 列中的数组添加一个元素的主要内容,如果未能解决你的问题,请参考以下文章

向 laravel 中的资源 json 响应添加状态和消息键

如何查询数据库以查找包含来自多选 (Laravel) 的 json 数据的列中的元素

在laravel中的json数组中查找

Laravel Eloquent 在 JSON 列中查找日期在某个范围内的所有记录

从 Laravel 中的数组向数据透视表中的额外列添加条件值

Vue + Laravel:如果元组数据之一中的表单数组中的数据,如何从api挂载数据