laravel - 在 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
},
................
]
有什么帮助吗?
解决方案
您不能简单地更新,因为正如您所发现的那样,它会覆盖现有值。
您需要检索现有数据(假设有一些)并将其解码为数组。然后您需要将新数据推送到阵列上。然后将其重新编码为 JSON 并将其保存回数据库。我目前正在使用类似的过程来更新第三方平台的使用统计信息。
推荐阅读
- xml - 在将 XML 反序列化为 Rust 结构时,是否可以在没有中间结构的情况下直接映射子级?
- python - 方差膨胀因子输出统计模型
- scheme - 如何(eval ...)在鸡 r7rs 库中?
- javascript - 为什么我的 reduce() 函数无法找出正确的 maxGrade?
- ios - Ionic Native Diagnostic 未在 iOS 中触发
- hammerspoon - 如何防止hammerspoon 热键覆盖其他应用程序中的热键?
- vim - Vim:名称中没有扩展名的特定文件类型的自动命令?
- python - 将多通道 numpy 数组转换为 Photoshop PSD 文件
- react-native - 如何在 react-native 中按下按钮时打开 webview?
- deployment - SSIS - 包部署模型部署到 MSDB