質問編集履歴
1
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,4 +82,25 @@
|
|
82
82
|
自分が考えるに、$val->prev_date == $row->dateで日付が一致したデータは昨年のデータも含めて計算が走り、日付が一致しないばあいは!isset($val->prev_date)の処理がはしると思っています。
|
83
83
|
|
84
84
|
しかし、現状は、現在の日付(今年)は正常に計算しているのですが、昨年の計算処理は全て昨年の最初の日付で全て計算してしまいます。
|
85
|
-
(例:2021-06-08と2020-06-08で計算。2021-06-10と2020-06-08で計算。やりたいことは、2021-06-10は2020-06-10で計算。)
|
85
|
+
(例:2021-06-08と2020-06-08で計算。2021-06-10と2020-06-08で計算。やりたいことは、2021-06-10は2020-06-10で計算。)
|
86
|
+
|
87
|
+
|
88
|
+
追記
|
89
|
+
```
|
90
|
+
amtは金額
|
91
|
+
foreach ($lastDate as $val) {
|
92
|
+
|
93
|
+
$result = DB::table('posts')
|
94
|
+
->when(($val->prev_date == $row->date), function ($query) use ($val) {
|
95
|
+
return $query->selectRaw('DATE_FORMAT(created_at, "%Y%m%d") as date')
|
96
|
+
->selectRaw('SUM(amt) AS amount')
|
97
|
+
->selectRaw('SUM(amt) / SUBDATE(SUM(amt), SUBDATE(DATE_FORMAT(created_at, "%Y%m%d"), INTERVAL 1 YEAR)) AS amount_ratio');
|
98
|
+
|
99
|
+
})
|
100
|
+
->when((!isset($val->prev_date)), function ($query) {
|
101
|
+
return $query->selectRaw('DATE_FORMAT(created_at, "%Y%m%d") as date')
|
102
|
+
->selectRaw('SUM(amt) AS total_amount')
|
103
|
+
->selectRaw('SUM(amt) / 0 AS amount_ratio');
|
104
|
+
)}
|
105
|
+
->get();
|
106
|
+
```
|