我有交易表:
我的表架构:
id | item_name | quantity | created_at
我尝试了很多方法,但它不起作用(链接:Laravel Eloquent get results grouped by days。
我想这样显示:
示例:
数量:xxx 月:7月
数量:xxx 月:十月
数量:xxx 月:11月
如何将created_at列转换为仅限月份分组并将其显示为Word而不是数字,然后计算该月份的分组数量?
谢谢
答案 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();