Создать и обновить систему посещаемости в laravel. Возникла проблема с сохранением массива - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть проект системы управления студентами, в котором у меня есть определенное количество партий в месяц, поэтому в каждой партии будет максимум 20 студентов, а также у каждой партии будут определенные даты (утренняя сессия и послеобеденная сессия). Например: Партия А будет иметь 18 учеников и будет иметь 3 даты, такие как ДД-ММ-ГГГГ, ДД-ММ-ГГГГ, ДД-ММ-ГГГГ. Как администратор, мне нужно зарегистрировать посещаемость для каждого студента, каждой партии, каждой даты и каждой сессии.

Это означает, что у меня есть сводный экран для одной партии, включая студентов, даты и сессии.

когда я щелкаю по партии, она должна показывать студентов и даты партии, в поле даты партии должен быть установлен флажок, когда я отмечаю эту кнопку, она должна быть помечена как присутствующая, если не помечена как отсутствующая.

Именно в табличном представлении заголовок состоит из дат. Хотя строки тела состоят из имени студента и флажка, соответствующего столбцу дат.

Все данные должны быть размещены в одном go, а также необходимо получить и обновить данные.

У меня есть попытался использовать массив для хранения данных, но все данные, хранящиеся в базе данных, не сохраняются в соответствии с необходимостью.

Как этого добиться?

Пробные коды приведены ниже ..

In Controller ..

public function get_add($id)
{
    $module = $this->module;

    $singleData = $this->batch->find($id);
    return view('admin.'.$module.'.add_edit', compact('singleData', 'module'));
}

public function post_add(Request $request, $id)
{
    $module = $this->module;
    // $this->attendance->fill($request->all());

    $dd = $request->schedule_id;
    if($dd){
        foreach($request->schedule_id as $key => $v){
            $data = array(
                'batch_id' => $id,
                'schedule_id' => $request->schedule_id [$key],
                'user_id' => $request->user_id [$key],
                'am_attendance_status' => isset($request->am_attendance_status [$key]) ? 1 : 0,
                'pm_attendance_status' => isset($request->pm_attendance_status [$key]) ? 1 : 0,
                'created_at' => new DateTime,
                'updated_at' => new DateTime,
            );
            // dd($data);
            Attendance::insert($data);
        }
      return redirect('admin/'.$module.'/')->with('success', 'Data has been updated');
    }else{
      return redirect('admin/'.$module.'/')->with('error', 'Data has not been updated');
    }

}

In Modal ..

<?php namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Database\Eloquent\SoftDeletes;

class Attendance extends Authenticatable
{
   use SoftDeletes;
   protected $dates = ['deleted_at'];

   protected $table = 'attendance';
   protected $fillable = ['batch_id', 'schedule_id', 'user_id', 'am_attendance_status', 'pm_attendance_status'];

   public function user()
   {
     return $this->belongsTo('App\User', 'user_id');
   }

  public function batch()
   {
    return $this->belongsTo('App\Batch', 'batch_id');
   }

   public function schedule()
   {
     return $this->belongsTo('App\Schedule', 'schedule_id');
   }

 }

In Route ..

 //Attendance
Route::get('attendance', 'Admin\AttendanceController@get_index');
Route::get('attendance/{id}/add', 'Admin\AttendanceController@get_add');
Route::post('attendance/{id}/add', 'Admin\AttendanceController@post_add');

In View ..

<div class="table-responsive text-center">
<table id="dataTable" class="table table-bordered table-hover" style="white-space: nowrap;">
    <thead>
        <th>#</th>
        <th>NRIC</th>
        <th>Student Name</th>
        @foreach($singleData->schedule as $list)
        <th class="text-center" colspan="2">{{ date('d M, Y', strtotime($list->date))}}</th>@endforeach
    </thead>
    <thead>
        <th></th>
        <th></th>
        <th></th>
        @foreach($singleData->schedule as $list)
        <th class="text-center">{{$list->am_from_time}}</th>
        <th class="text-center">{{$list->am_to_time}}</th>
        @endforeach
    </thead>
    @php $students = App\StudentHasCourse::with('user')->where('batch_id', $singleData->id)->get(); @endphp
    <?php $count = 0; ?>
        @foreach($students as $row)
        <?php $count++; ?>
            <tr>
                <th style="font-weight: normal;">{{$count}}</th>
                <th style="font-weight: normal;">@foreach($row->user->student as $stud) {{$stud->nric}} @endforeach</th>
                <th style="font-weight: normal;">{{$row->user->name}}</th>
                @foreach($singleData->schedule as $list)
                <input type="hidden" name="batch_id[]" value="{{$singleData->id}}">
                <input type="hidden" name="user_id[]" value="{{$row->user->id}}">
                <input type="hidden" name="schedule_id[]" value="{{$list->id}}">
                <td>
                    <input type="checkbox" name="am_attendance_status[]" value="1">
                </td>
                <td>
                    <input type="checkbox" name="pm_attendance_status[]" value="1">
                </td>
                @endforeach
            </tr>
            @endforeach
</table>

Поля базы данных ..

id 
user_id 
batch_id 
schedule_id 
am_attendance_status 
pm_attendance_status 
created_at 
updated_at 
deleted_at

...