Создание отчета о посещаемости в laravel - PullRequest
0 голосов
/ 29 мая 2020

Мой вопрос очень похож на этот вопрос о переполнении стека , и почти мой код скопирован из него. Но проблема в том, что он не может отображать буквы «P» и «H», если сотрудники присутствуют или если дата выходная. (Я пытаюсь получить ответ по ссылке выше)

Контроллер

$report = Report::findOrFail($id);
$staffs = Staff::where('building_id', $report->building_id)->get();
$month = date('m', strtotime($report->data));
$attendances = [];

foreach ($staffs as $staff) {
  $holidays = Holiday::whereMonth('date', $month)->get();
  $month_in_no = date('m', strtotime($report->data));
  $s = Staff::where('id', $staff->id)->with(['attendance' => function($attend) use ($month_in_no) {
              $attend->whereMonth('date', $month_in_no)->where('direction', 'In');
  }])->get();
  array_push($attendances, $s);
}

И мой файл Blade

<tbody>
@foreach ($attendances as $attendance)
    @foreach ($attendance as $staff)
        <tr>
            <td>{{ $staff->name }}</td>
            @php $totalPresentCount = 0 @endphp
            @for ($i = 1; $i < $daysInMonth; $i++)
                @php
                    $date_create = date('Y-m')."-".$i;
                    $pre_abs = '-';
                @endphp
                @foreach ($staff->attendance as $att)
                    @foreach ($holidays as $holiday)
                        @php
                            $date_to_check = date('Y-m-d', strtotime($att->date));
                        @endphp
                        @if ($date_create == $date_to_check) {{-- cannot check here for my notice! but don't know why --}}
                            @php
                                $pre_abs = 'P';
                                $totalPresentCount++;
                            @endphp
                        @elseif ($date_to_check == $holiday->date || date('D', mktime(0, 0, 0, $month, $i, $report->year)) == 'Sat' || date('D', mktime(0, 0, 0, $month, $i, $report->year)) == 'Sun')
                            @php
                                $pre_abs = 'H';
                            @endphp
                        @endif
                    @endforeach
                @endforeach
                <td>{{ $pre_abs }}</td>
            @endfor

            {{-- below is for checking total p/a/h --}}
            <td>{{ $totalPresentCount }}</td>
            <td>{{ $daysInMonth - count($holidays) - $totalPresentCount }}</td>
            <td>{{ count($holidays) }}</td>
        </tr>
    @endforeach
@endforeach
</tbody>

Он может отображать результат, как показано ниже

enter image description here

как показать букву «P», если персонал присутствует в этот конкретный день, и «H», если дата находится в Holiday::model()

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...