首页 > 解决方案 > 如何将数组中的日期传递到laravel中的数据库

问题描述

我在 Laravel 中进行了以下迁移:

public function up()
{
    Schema::create('attendances', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->bigInteger('student_id');
        $table->date('att_date')();
        $table->string('status');
        $table->timestamps();
    });
}

我在 Blade 中的表单看起来像这样

<form method="post" action="{{url('att-sumbit')}}" enctype="multipart/form-data">
  @csrf 
  <div class="row">
    <div class="col-md-4"></div>
    <div class="form-group col-md-4">
      <strong>Date : </strong>
      <input class="date form-control"  type="text" id="datepicker" name="att_date[]">
    </div>
  </div>
  <div class="mb-3">
    <table>
      <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Level</th>
        <th>Status</th>
      </tr>
      @foreach($students_att as $student)
        <tr>
          <td>{{$student -> id}}</td>
          <td>{{$student -> name}}</td>
          <td>{{$student -> level}}</td>
          <td>
            <input type="hidden" id="custId" name="student_id[]" value="{{$student -> id}}">
          </td>
          <td>
            <select name="status[]">
              <option value="0">No</option>
              <option value="1">Yes</option>
            </select>
          </td>
        </tr>
      @endforeach
    </table>
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>

<script type="text/javascript">
  $('#datepicker').datepicker({
    autoclose: true,
    format: 'yyyy-mm-dd'
  });
</script>

我让我的控制器是这样的:

public function sumbit(Request $request)
{
    /* $submit = new Attendance;
    $submit->student_id = $request->get('student_id');
    // $submit->att_date = $request->get('att_date');
    // $submit->status = $request->get('status');
    $submit->save();
    return redirect('att'); */

    $studentID = $request->input('student_id', []);
    $studentDate = $request->input('att_date', []);
    $studentStatus = $request->input('status', []);
    
    $students = [];
    
    foreach ($studentID as $index => $student) {
        $students[] = [
            "student_id" => $studentID[$index],
            "att_date" => $studentDate[$index],
            "status" => $studentStatus[$index],
        ];
    }
    
    $create = Attendance::insert($students);
}

所以我希望当我提交表单时,它必须记录下我在下图中显示的每个输入到我的数据库的日期选择器使用的相同日期 图片

但是当我执行此过程时,我收到此错误(ErrorException Undefined offset: 1)我的控制器行中此行中的错误

"att_date" => $studentDate[$index],

Ii如何解决此错误请帮助

标签: laraveleloquent

解决方案


让一些更简单的事情。

@foreach($students_att as $student)
    <tr>
      <td>{{$student -> id}}</td>
      <td>{{$student -> name}}</td>
      <td>{{$student -> level}}</td>
      <td>
        <input type="hidden" id="custId" name="student[student_id][]" value="{{ $student->id }}">
      </td>
      <td>
        <select name="student[status][]">
          <option value="0">No</option>
          <option value="1">Yes</option>
        </select>
      </td>
    </tr>
@endforeach

控制器 :

$students = $request->student;

foreach($students as $key => $value) {
    $students[$key]['att_date'] = $request->att_date[0];
}
   
$create = Attendance::insert($students);

推荐阅读