Laravel集团仅按日期到月份计算

时间:2015-10-06 20:12:54

标签: laravel-5

我有交易表:

我的表架构:

id | item_name | quantity | created_at

我尝试了很多方法,但它不起作用(链接:Laravel Eloquent get results grouped by days

我想这样显示:

示例:

数量:xxx 月:7月

数量:xxx 月:十月

数量:xxx 月:11月

如何将created_at列转换为仅限月份分组并将其显示为Word而不是数字,然后计算该月份的分组数量?

谢谢

4 个答案:

答案 0 :(得分:7)

    $data= Transaction::select('id', 'item_name','quantity', 'created_at')
            ->get()
            ->groupBy(function($val) {
            return Carbon::parse($val->created_at)->format('m');
     });

答案 1 :(得分:2)

如果您不想使用碳

$data= Transaction::get()
    ->groupBy(function($item) {
    return $item->created_at->month;
});

答案 2 :(得分:2)

使用雄辩的日期功能只查找日期,您可以使用月份来获得只有一年的月份或年份。

例如:

public function salesmonthly(Request $request){

    $monthlysales=DB::table('tbl_invs')
     ->select(DB::raw('sum(total) as total'),DB::raw('date(created_at) as dates'))
     ->groupBy('dates')
     ->orderBy('dates','desc')
    ->get();


    // dd($monthlysales);
    return view('reports.monthlysales', compact('monthlysales'));
}

答案 3 :(得分:0)

如果要基于不同年份中每个月的计数,请使用以下代码

$usersPerMonth =User::select(DB::raw('count(id) as `data`'),DB::raw("DATE_FORMAT(created_at, '%Y-%m') new_date"))
    ->groupBy('new_date')->orderBy('new_date')->get();