为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
繁星点点滴滴 2021-05-07 18:48:37
我正在尝试建立一个小的统计模块。我正在寻找一个数组,其中包含每个月“事件”表中事件的数量。通过下面的查询,我可以得到结果,但前提是当月有结果。如果没有,则不会出现。我的请求:$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)的数组或集合
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

有了这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;


查看完整回答
反对 回复 2021-05-21
  • 3 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信