यह आपका नियंत्रक कार्य है
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;
}
मैंने फ़ोरलूप को थोड़ा बदल दिया है
for ($year = 2000; $year <= 2050; $year++) {
$selected = (isset($getYear) && $getYear == $year) ? 'selected' : '';
echo "<option value='$year' $selected>$year</option>";
}
बाकी सब कुछ पिछले प्रश्न में ध्यान रखा गया है, जांचें कि क्या यह काम करता है।
संपादित करें
$employeeLeave
. के लिए डेटा लाने के बाद परिणाम सरणी बनाएं
$result = [];
foreach ($employeeLeave as $empleave) {
if ($empleave->type == 'casual') {
$result[$empleave->name]['casual'][] = $empleave;
}
if ($empleave->type == 'medical') {
$result[$empleave->name]['medical'][] = $empleave;
}
}
$result
भेजें ब्लेड करने के लिए।
अपनी html तालिका संरचना को नीचे के रूप में बदलें,
<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>