自己写的,留下备用.
$arr = DB::select("SELECT DATE_FORMAT(created_at,'%Y%m') AS month,sum(total) AS num FROM orders WHERE process_status = 1 and unix_timestamp(`created_at`) BETWEEN UNIX_TIMESTAMP(now()) - 31556926 AND UNIX_TIMESTAMP(now()) GROUP BY month");
$res = [];
foreach ($arr as $key => $val){
$res[$val->month] = $val->num;
}
$m = date('m');
$ext = date('Y');
for ($i=1; $i < 13; $i++) {
if($m < 10){
if($i < 10 && $i >$m) $key = ($ext-1).'0';
elseif($i >= 10) $key = $ext-1;
else $key = $ext.'0';
if(!array_key_exists($key.$i,$res)){
$res[$key.$i] = 0;
}
}else{
if($i > $m) $key = $ext-1;
elseif($i >= 10 && $i <= $m) $key = $ext;
else $key = ($ext).'0';
if(!array_key_exists($key.$i,$res)){
$res[$key.$i] = 0;
}
}
}
ksort($res);
dd($res);