Laravel carbon получают сумму значений определенного месяца - PullRequest
0 голосов
/ 30 декабря 2018

У меня есть таблица со столбцами - start, stop, mechanic, labour_hrs.В основном это записывает время механика на работе.Я пытаюсь отобразить общее количество часов каждого механика в моем шаблоне за месяц.

Контроллер:

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

Я получаю результаты какэто:

enter image description here

Мне нужно, чтобы это выглядело как - общее количество сент. для этого сотрудника и общее количество окт.Чего мне не хватает?

1 Ответ

0 голосов
/ 30 декабря 2018

Опция 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
...