如何按月份或年份(月份为零)进行计数和分组

我正在尝试建立一个小的统计模块。我正在寻找一个数组,其中包含每个月“事件”表中事件的数量。通过下面的查询,我可以得到结果,但前提是当月有结果。如果没有,则不会出现。我的请求:


$data = DB::table("evenements")

        ->select(DB::raw('EXTRACT(MONTH FROM datedevenement) AS month, COUNT(id) as id'),

         DB::raw('ifnull(count(id),0) as id')

        )

         ->where('typeevenement_id', '1')

        ->whereYear('datedevenement', Carbon::now()->year)

        ->orderBy('datedevenement')


        ->groupBy(DB::raw('month'))

        ->get();




    return $data;

我的餐桌


id | datedevenement | typeevenement_id

我了解我的要求无法发明不存在的月份。我想知道碳或laravel是否没有按月份或年份连续列出的内容。


结果必须是具有monthORyears-> count(evenement)的数组或集合


繁星点点滴滴
浏览 185回答 3
3回答

元芳怎么了

有了这2个答案和一个小小的建议,我就得出了这个解决方案(我已经为当前月份的订单添加了一些东西作为起点):$monthly_uploaded_product = Evenement::select(DB::raw('COUNT(id) as total, EXTRACT(MONTH FROM datedevenement) AS month')    )        ->where('typeevenement_id', '1')        ->wheredate('datedevenement', '>=', Carbon::now()->lastOfMonth()->subyears(1))       /// ->whereYear('datedevenement', Carbon::now()->year)       ->groupBy(DB::raw('month'))        ->get();    $mois  = ["janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "aout", "septembre", "octobre", "novembre", "decembre"];    foreach ($mois as $mois99) {        $arriveeparmoisrefuge[]= array(            'mois' => $mois99,            'total' => '0'        );    }        foreach ($monthly_uploaded_product as $key) {                $arriveeparmoisrefuge[$key->month - 1]['total'] = $key->total;//update each month with the total value        }    $sorted = collect($arriveeparmoisrefuge)->sortBy(function ($count, $month) {        $currentMonth = (int) \Carbon\Carbon::now()->month;        return ($month + (13 - $currentMonth - 1)) % 12;    });    return  $sorted;
打开App,查看更多内容
随时随地看视频慕课网APP