[英]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.