首页 > 解决方案 > 在 Laravel 中推送数据而不是更新 json 列

问题描述

我需要一些与更新 json 类型的表列相关的帮助。

这是一个场景,我有一个来自外部 api 的 api 调用。响应中,有些实例包含多个具有不同值的相同 id。所以我的目标是将它们全部添加到一个 json 列中,如果它属于同一个 id。

所以例子

  foreach(responses as response) {
     //here the response->id occured twice and have different response->value
     // response->id(123)
     // response->id(123
     DB::table('table')->where('res_id', response->id)->update['myvalues' => json_decode(response->value);
  }

这种方法的问题是第一个response->value已经保存在 db 中的 multiple response->id(same),如果相同,它将在下一次迭代中被覆盖response->id。所以我需要的是附加它而不是更新。

json 列的myvalues格式如下

       [
         {
            "Fee": "TshirtFee",
             "FeeAmount": {
             "CurrencyCode": "EUR",
             "CurrencyAmount": -2.87
         },
         ................
        ]

有什么帮助吗?

标签: laravel

解决方案


您不能简单地更新,因为正如您所发现的那样,它会覆盖现有值。

您需要检索现有数据(假设有一些)并将其解码为数组。然后您需要将新数据推送到阵列上。然后将其重新编码为 JSON 并将其保存回数据库。我目前正在使用类似的过程来更新第三方平台的使用统计信息。


推荐阅读