首页 > 解决方案 > 如何更新数组中的 JSON 数据

问题描述

我的表中有一个 JSON 列,其中包含如下 JSON 数据数组:

save_data
[
  {"option_id": 20000, "question_id": 10000}, 
  {"option_id": 20001, "question_id": 10001}, 
  {"option_id": 20002, "question_id": 10002}
]

我可以使用以下方法获取记录:

$save_data = DB::table('save_state')
    ->whereJsonContains('save_data', [["option_id" => 20002]])
    ->get();

但现在我想要的是仅更新具有我想要的 question_id 的元素的 option_id 值,例如:

将 option_id 值更改为 question_id = "10002" 的 "20003"

我已经尝试过了,但它仍然无法正常工作。

$save_data = DB::table('save_state')
    ->whereJsonContains('save_data', [["option_id" => 20002]])
    ->update(['save_data->option_id' => [20003]]);

标签: arraysjsonpostgresqllaravel-5.8

解决方案


推荐阅读