Đây là chức năng điều khiển của bạn
public function employeeAttendance(Request $request)
{
$employeeName = User::all();
$countMonth = (!empty($request->get('month')) ? intval($request->get('month')) : 0);
$countYear = (!empty($request->get('year')) ? intval($request->get('year')) : 0);
$firstDay = new DateTime(date('F jS Y h:i:s A', strtotime('first day of ' . date('Y-m', strtotime("$countYear-$countYear")))));
$lastDay = new DateTime(date('F jS Y h:i:s A', strtotime('last day of ' . date('Y-m', strtotime("$countYear-$countYear")))));
$employeeLeave = LeaveManagement::where('yourdatefield', '>=', $firstDay)
->where('yourdatefield', '<=', $lastDay)->get();
$totalWorkingDays = 0;
if (!empty($countMonth && $countYear)) {
$totalWorkingDays = $this->countDays($countYear, $countMonth, array(0, 6));
}
$result = [];
foreach ($employeeLeave as $empleave) {
if ($empleave->type == 'casual') {
$result[$empleave->name]['casual'][] = $empleave;
}
if ($empleave->type == 'medical') {
$result[$empleave->name]['medical'][] = $empleave;
}
}
return view('pages.attendance', compact('employeeName', 'totalWorkingDays', 'employeeLeave','result'));
}
public function countDays($year, $month, $ignore)
{
$count = 0;
$counter = mktime(0, 0, 0, $month, 1, $year);
while (date("n", $counter) == $month) {
if (!in_array(date("w", $counter), $ignore)) {
$count++;
}
$counter = strtotime("+1 day", $counter);
}
return $count;
}
Tôi đã thay đổi forloop một chút
for ($year = 2000; $year <= 2050; $year++) {
$selected = (isset($getYear) && $getYear == $year) ? 'selected' : '';
echo "<option value='$year' $selected>$year</option>";
}
Phần còn lại, mọi thứ đã được giải quyết trong câu hỏi trước, hãy kiểm tra xem nó có hoạt động không.
CHỈNH SỬA
Tạo mảng kết quả sau khi tìm nạp dữ liệu cho $employeeLeave
$result = [];
foreach ($employeeLeave as $empleave) {
if ($empleave->type == 'casual') {
$result[$empleave->name]['casual'][] = $empleave;
}
if ($empleave->type == 'medical') {
$result[$empleave->name]['medical'][] = $empleave;
}
}
gửi $result
để cắt.
Thay đổi cấu trúc bảng html của bạn như bên dưới,
<table class="table table-bordered table-striped ">
<thead>
<tr>
<th>Employee Name</th>
<th>Present Day</th>
<th>Casual Leave</th>
<th>Medical Leave</th>
</tr>
</thead>
<tbody>
@foreach($result as $empname => $empleave)
<tr>
<td>{{ $empname }}</td>
<td>{{ $totalWorkingDays }}</td>
<td>{{ count($result[$empname]['casual']) }}</td>
<td>{{ count($result[$empname]['medical']) }}</td>
</tr>
@endforeach
</tbody>
</table>