我有一个带有列的表-开始,停止,机械,人工工时。基本上,它记录了技工的工作时间。 我试图在模板中显示每个机械师的每月工作时间。
控制器:
public function index()
{
$subith = Laborhrs::all()->where('mechanic','7');
return view('reports.labour_monthly')->with('subith',$subith);
}
模板:
@foreach($subith as $subith)
<tr>
<td>{{\Carbon\Carbon::parse($subith->stop)->format('M')}}</td>
<td>{{$subith->labor_hrs}}</td>
</tr>
@endforeach
我得到这样的结果:
我需要得到它-该员工的9月总计和10月份的总计。我想念什么?
答案 0 :(得分:1)
选项1:在查询中分组
控制器:
public function index()
{
$subiths = Laborhrs::selectRaw('MONTH(stop) as month, sum(labor_hrs) as sum')
->where('mechanic', 7)
->groupBy('month')
->orderByDesc('stop')
->get();
return view('reports.labour_monthly', compact('subiths'));
}
查看:
@foreach($subiths as $subith)
<tr>
<td>{{ date("F", mktime(0, 0, 0, $subith->month, 1)) }}</td>
<td>{{ $subith->sum }}</td>
</tr>
@endforeach
选项2:分组查询结果
如果每个机械师上有大量数据,请不要使用此选项。
控制器:
public function index()
{
$subiths = Laborhrs as sum')::where('mechanic', 7)
->orderByDesc('stop')
->get();
$grouped = $subiths->groupBy(function($item){
return \Carbon\Carbon::parse($item->stop)->format('F');
});
return view('reports.labour_monthly', compact('grouped'));
}
查看:
@foreach($grouped as $month => $group)
<tr>
<td>{{ $month }}</td>
<td>{{ $group->sum('labor_hrs') }}</td>
</tr>
@endforeach