人事部が記入する従業員の出席をマークするフォームがあり、現在のすべての従業員にループされます。データベースで出席がマークされている現在の値を表示する必要があります。それ以外の場合は空白にする必要があります。
私のコントローラーでは、既存の結果を照会します。
$results = Attendance::where('Sdate', '=', date("Y-m-d", strtotime($TheDate))) ->get();
次に、それらをループして従業員の詳細を取得します。
foreach($results as $result)
{
$contractors = DB::table('contractors') ->where('contractors.AreaPosition', '=', $department) ->where('PRN', '!=', $result->PRN) ->get(); $employees = DB::table('current_employees') ->where('current_employees.AreaPosition', '=', $department) ->where('PRN', '!=', $result->PRN) ->get(); $showEmployees = array_merge($contractors, $employees);
}
これにより、その日付の出席記録が保存されているすべての従業員が除外されるはずですが、正しくループしていないようです。一部の結果は除外されますが、すべてではありません。結果変数を返すと、レコードの正しいリストが得られるので、その部分が正しく機能していることがわかります。
私の見解で達成しようとしているのは、次のようなものです。
@foreach($attendance as $results)
Show form where there's an existing record for this date and department
@endforeach
@foreach($employees as $employee)
Show form for all employees in this department (but should exclude results where there is a record in attendance)
@endforeach