Dies ist Ihre Controller-Funktion
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;
}
Ich habe forloop ein wenig verändert
for ($year = 2000; $year <= 2050; $year++) {
$selected = (isset($getYear) && $getYear == $year) ? 'selected' : '';
echo "<option value='$year' $selected>$year</option>";
}
Alles andere ist in der vorherigen Frage erledigt, überprüfen Sie, ob es funktioniert.
BEARBEITEN
Ergebnisarray erstellen, nachdem Daten für $employeeLeave
abgerufen wurden
$result = [];
foreach ($employeeLeave as $empleave) {
if ($empleave->type == 'casual') {
$result[$empleave->name]['casual'][] = $empleave;
}
if ($empleave->type == 'medical') {
$result[$empleave->name]['medical'][] = $empleave;
}
}
sende $result
zu klinge.
Ändern Sie Ihre HTML-Tabellenstruktur wie folgt,
<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>