2017-06-01 48 views
0

我想更新所選學生的班級數據。但是我有一些限制,我所選擇的學生數據沒有被正確更新。 寫我的代碼有什麼錯誤?帶複選框的多個更新laravel(LARAVEL 5.2)

首先我有一個學生表:

{!! Form::open(['method' => 'POST', 'action' => ['[email protected]_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' => ['[email protected]', $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', '[email protected]_siswa'); 
Route::resource('siswa', 'SiswaController'); 
Route::post('siswa', '[email protected]_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'); 
} 

我的問題是如何從學生數據中更新學生從當前班級轉移到另一班級的學生數據? 我很感激,如果你能幫助我解決這個問題

+0

一個可能的解決方案可以更新刪除以前的數據上次檢查複選框並插入新的 –

+0

這是$ request-> id來自哪裏?我沒有看到名稱爲'id'的表單輸入 – Demonyowh

回答

0

首先你更新是不對的。應該像

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

這將更新的是在檢查了所有記錄的id_kelas複選框的值爲$request->id ..我不知道你會在代碼中獲得那些東西,但我認爲這是你的目標。

另一個錯誤是它只會爲第一個複選框起作用,因爲你正在關閉表單在循環中...代碼將假定窗體在那裏結束..

+0

Grammar.php中的ErrorException第118行: 傳遞給Illuminate \ Database \ Grammar :: parameterize()的參數1必須是數組,字符串給定,在第376行的C:\ wamp64 \ www \ stpbapp \ vendor \ laravel \ framework \ src \ Illuminate \ Database \ Query \ Grammars \ Grammar.php中,並且可以定義爲 –

+0

dd($ request-> checkbox);'這是價值 – Demonyowh