簡體   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