【问题标题】:Multiple update laravel with checkbox (LARAVEL 5.2)带复选框的多次更新 laravel (LARAVEL 5.2)
【发布时间】:2017-11-02 01:22:54
【问题描述】:

我想更新我选择的学生的班级数据。但是我有限制,我选择的学生数据没有正确更新成功。 我写代码有什么错误?

第一个我有一个学生表:

{!! Form::open(['method' => 'POST', 'action' => ['SiswaController@pindah_kelas']]) !!}
  <div class="panel panel-primary">
    <div class="panel-heading" align="center">Daftar Data Siswa</div>
    <table id="dataSiswa" class="table table-striped">
      <thead>
        <tr>
          <th><input type="checkbox" name"select-all" id="select-all" />
          <th>NIPD</th>
          <th>NISN</th>
          <th>Nama Siswa</th>
          <th>Kelas</th>
          <th>Action</th>
        </tr>
      </thead>
      <tbody>
        <?php foreach($data_kelas as $siswa): ?>
        <tr>
          <td><input type="checkbox" name="checkbox" id="checkbox" value="{{ $siswa->id }}"></td>
          <td>{{ $siswa->nipd }}</td>
          <td>{{ $siswa->nisn }}</td>
          <td>{{ $siswa->nama_siswa }}</td>
          <td>{{ $siswa->kelas->nama_kelas }}</td>
          <td>
            <div class="box-button">
              {{ link_to('siswa/' . $siswa->id, '', ['title' => 'Detail', 'class' => 'btn btn-info btn-sm glyphicon glyphicon-list']) }}
            </div>
            <div class="box-button">
              {{ link_to('siswa/' . $siswa->id . '/edit', '', ['title' => 'Edit', 'class' => 'btn btn-warning btn-sm glyphicon glyphicon-edit']) }}
            </div>
            <div class="box-button">
              {!! Form::open(['method' => 'DELETE', 'action' => ['SiswaController@destroy', $siswa->id]]) !!}
                <button type="submit" class="btn btn-danger btn-sm" title="Hapus"><i class="glyphicon glyphicon-trash"></i></button>
              {!! Form::close() !!}
            </div>
          </td>
        </tr>
        <?php endforeach ?>
      </tbody>
    </table>
  </div>
  {!! Form::submit('Pindah Kelas', ['class' => 'btn btn-primary form-control']) !!}
  {!! Form::close() !!}

这是我的 javascript 代码:

<script type="text/javascript">
  $(document).ready(function(){
    $('#select-all').click(function(){
      if(this.checked) {
        $(':checkbox').each(function(){
          this.checked = true;
        });
      }
      else {
        $(':checkbox').each(function(){
          this.checked = false;
        });
      }
    });
  });
</script>

第二个是我的路线:

Route::get('siswa/pencarian_siswa', 'SiswaController@pencarian_siswa');
Route::resource('siswa', 'SiswaController');
Route::post('siswa', 'SiswaController@pindah_kelas');

我最后一个控制器:

public function pindah_kelas(Siswa $siswa, Request $request)
{
  $input = $request->id;
  $siswa->update($input)->whereIn('id', $input(['id_kelas' => 3]));
  Session::flash('flash_message', 'Data Siswa Berhasil Diupdate.');
  return redirect('kelas');
}

我的问题是如何根据我选择的学生数据更新学生从当前班级到另一个班级的转移? 如果您能帮助我解决这个问题,我将不胜感激

【问题讨论】:

  • 一种可能的解决方案是在更新时删除上次选中复选框的先前数据并插入新的
  • 这个 $request->id 是从哪里来的?我没有看到名称为“id”的表单输入

标签: php mysql laravel checkbox laravel-5.2


【解决方案1】:

首先你的更新是错误的..应该是这样的

$siswa::whereIn('id', $request->checkbox)->update(['id_kelas' => $request->id]);

这会将复选框中选中的所有记录的 id_kelas 更新为 $request-&gt;id 值..我不知道您将在代码中的何处获得它,但我认为这是您的目标..

另一个错误是它只适用于第一个复选框,因为您正在关闭循环中的表单..代码将假定表单在那里结束..

【讨论】:

  • Grammar.php 第 118 行中的 ErrorException:传递给 Illuminate\Database\Grammar::parameterize() 的参数 1 必须是数组类型,给定字符串,在 C:\wamp64\www\stpbapp 中调用\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php 在第 376 行并定义
  • 你能dd($request-&gt;checkbox);看看它的价值吗
猜你喜欢
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多