繁体   English   中英

如何获取多个 Jsonb 值的总和 Laravel

[英]How To Get Sum On Multiple Jsonb Values Laravel

我每个 Weak 都运行一个 cron,并将客户的数据保存在一个新表上,对于一个客户,每月 4 条记录,每个月底我都在运行一个新的 cron,需要获取客户数据的总和并将其保存在一个新表上表发送一些报告。

弱数据是这样保存的

[customer_id = 25
data {
  "body": {
    "aaa": 0,
    "bbb": 98,
    "ccc": 0,
    "ddd": 1,
  }
}
],
[customer_id = 25
data {
  "body": {
    "aaa": 22,
    "bbb": 22,
    "ccc": 22,
    "ddd": 12,
  }
}
]

因为它是 JSON b 列,所以我无法得到总和

这是我的代码

 $summaryReport = summaryreport::all();
                   
 foreach($summaryReport as $report){
          
     $data['aaa'][$report->customer_id] = (json_decode($report->data)->body->aaa);
    }
     Model::insert($data);
    ``

首先使用收集方法where()过滤您的报告,以仅包含正确的用户。 从那里您可以对所有数据条目求和的集合求和,但是使用closure方法来完成。 您可以从数据结构中获取数据的位置,以调用另一个sum()

$reportData = collect(json_decode($report))->where('customer_id', $report->customer_id);

$reportData->sum(function ($item) {
    return collect($item->data->body)->sum();
});

这只是了解和理解 collections 方法以及如何在非标准数据结构中使用它们的练习。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM