如何在使用动态字段Laravel的数据库中插入和删除记录?

问题描述 投票:0回答:1

我正在使用Laravel5。在此应用程序中,可以动态添加和删除人员名称。为了创建新记录,所有功能都可以平稳运行。但是,我在更新记录方面有些困难。在“编辑”页面中,将显示并更改创建的职员名称。这些名称可以更新。但是,我添加了添加按钮和删除按钮,以使用户可以添加新人员名称或删除现有人员名称。

我的功能只能更新数据库中的现有记录。但是新添加的职员名称未插入数据库中。这是我要在控制器中更新的功能。

      public function update(Request $request, $id)
{

    $demo = Demo::findOrFail($id);

    $demo->tajuk_demo = $request->tajuk_demo;
    $demo->syarikat_id = $request->nama_syarikat;
    $demo->peralatan_sistem = $request->peralatan_sistem;
    $demo->tarikhmasa = $request->tarikhmasa;
    $demo->tarikhmasa_tamat = $request->tarikhmasa_tamat;
    $demo->tempat_demo = $request->tempat_demo;
    $demo->ulasan_demo = $request->ulasan_demo;
    $demo->komen_demo = $request->komen_demo;
    $demo->update();

    $pegawai = $request->all();

    // $rekod_id = $pegawai['rekod_id'];
    $itemRegistrationID = $pegawai['nama'];
    $OperasiID = $pegawai['pangkat'];
    $SectionID = $pegawai['bahagian'];

    $pegawai_semasa = Pegawai::where('rekod_id', '=', Input::get('rekod_id'))->exists();


        $peg_hadir = Pegawai::where('demo_id', '=', $id)
                 ->get();

        // Update the existing record
        foreach($peg_hadir as $peg){
        $key = array_search($peg->rekod_id, $pegawai['rekod_id']);
        $peg->itemRegistrationID = $itemRegistrationID[$key];
        $peg->OperasiID = $OperasiID[$key];
        $peg->SectionID = $SectionID[$key];
        $peg->save();
        }


    if (is_null($pegawai_semasa))
    {
        // Insert new record into database
        $count = count(Input::get('nama'));

        // get data
        $itemRegistrationID = Input::get('nama');
        $OperasiID = Input::get('pangkat');
        $SectionID = Input::get('bahagian');

        //loop through and save data
        for($i = 0; $i < $count; ++$i) {

            $pegawai = new Pegawai;
            $pegawai->demo_id = $id;
            $pegawai->itemRegistrationID = $itemRegistrationID[$i];
            $pegawai->OperasiID = $OperasiID[$i];
            $pegawai->SectionID = $SectionID[$i];
            $pegawai->save();
        }  
    }
    else
    {
      return redirect('demo');  
    }

}

这是视图刀片中用于编辑页面的代码:

<div class="form-group">
 <div class="row">
  <input type="button" class="add-row" value="Add">
  <button type="button" class="delete-row">Delete</button>
 </div>
</div>
<!--mula table  -->

<div class="form-group">
 <div class="row">
  <div class="col-lg-10">
    <table class="table table-striped table-bordered" id="pegawaihadir_table" >
      <thead>
        <tr>
          <td class="text-center col-lg-1"><strong>Pilih</strong></td>
          <td class="text-center col-lg-1"><strong>Pangkat</strong></td>
          <td class="text-center col-lg-3"><strong>Nama</strong></td>
          <td class="text-center col-lg-2"><strong>No Badan</strong></td>
          <td class="text-center col-lg-2"><strong>Seksyen</strong></td>
          <td class="text-center col-lg-2"><strong>No Tel</strong></td>
          <td class="text-center col-lg-2"><strong>Ext</strong></td>
        </tr>
      </thead>
        <tbody>

          @foreach($PegawaiHadir as $value)                                           
            <tr>
                <td><input type="checkbox" name="rekod" style="width:20px">
                  {!! Form::hidden('rekod_id[]', $value['rekod_id'], ['class' => 'form-control']) !!}
                </td>
                <td class="text-center">{{ Form::text('pangkat[]', $value['OperasiID'], ['class' => 'form-control pangkat', 'readonly' => 'true']) }}</td>
                <td>
                {{ Form::select('nama[]', $pegawai, $value['itemRegistrationID'], ['class' => 'form-control nama', 'required' => '']) }}
                </td>
                <td class="text-center">{{ Form::text('no[]', $value['Nobadan'], ['class' => 'form-control no', 'readonly' => 'true']) }}</td>
                <td class="text-center">{{ Form::text('bahagian[]', $value['SectionID'], ['class' => 'form-control bahagian', 'readonly' => 'true']) }}</td>
                <td class="text-center">{{ Form::text('telefon[]', $value['notelttp'], ['class' => 'form-control telefon', 'readonly' => 'true']) }}</td>
                <td class="text-center">{{ Form::text('ext[]', $value['ext'], ['class' => 'form-control ext', 'readonly' => 'true']) }}</td>
            </tr> 
          @endforeach                  
      </tbody>
    </table>              
 </div>
</div>

对于动态字段,我正在使用js代码来添加和删除页面中显示的记录。

  <script>
count=1;
$(document).ready(function(){
    $(".add-row").click(function(){
        var markup = '<tr><td><input type="checkbox" name="rekod" style="width:20px"></td>';
        markup +=  '<td><input type="text" class="form-control pangkat"  name="pangkat[]" style="width:100px" readonly></td>';
        markup +=  '<td><select class="form-control select2 nama" name="nama[]" style="width:300px"><option value="">Pilih</option><?php foreach($pegawai as $key => $value):echo '<option value="'.$key.'">'.addslashes($value).'</option>'; endforeach; ?></select></td>';
        markup +=  '<td><input type="text" class="form-control no"  name="no[]" style="width:100px" readonly></td>';
        markup +=  '<td><input type="text" class="form-control bahagian" name="bahagian[]" style="width:100px" readonly></td>';
        markup +=  '<td><input type="text" class="form-control telefon" name="telefon[]" style="width:100px" readonly></td>';
        markup +=  '<td><input type="text" class="form-control ext" name="ext[]" style="width:100px" readonly></td></tr>';
        $("table tbody").append(markup);
        count++;

        });

    $(document).on('change', 'select.form-control.nama', function() {
        var PegID = jQuery(this).val();
        var row = $(this);
        // alert(PegID);
           if(PegID)
           {
              jQuery.ajax({
                 context: this,  
                 url : 'get_pegawai/'+PegID,
                 type : "GET",
                 dataType : "json",
                 success:function(data)
                 {
                    console.log(data);
                        $(this).closest('tr').find('td .form-control.pangkat').val(data.operasiname);
                        $(this).closest('tr').find('td .form-control.no').val(data.Nobadan);
                        $(this).closest('tr').find('td .form-control.bahagian').val(data.sectionname);
                        $(this).closest('tr').find('td .form-control.telefon').val(data.notelttp);
                        $(this).closest('tr').find('td .form-control.ext').val(data.ext);  
                 }
              });
           }
           else
           {
              $(this).closest('tr').find('td .form-control.pangkat').empty();
              $(this).closest('tr').find('td .form-control.no').empty();
              $(this).closest('tr').find('td .form-control.bahagian').empty();
              $(this).closest('tr').find('td .form-control.telefon').empty();
              $(this).closest('tr').find('td .form-control.ext').empty();  
           }

    });


    // Find and remove selected table rows
    $(".delete-row").click(function(){
        $("table tbody").find('input[name="rekod"]').each(function(){
            if($(this).is(":checked")){
                $(this).parents("tr").remove();
            }
        });


    });



});    
</script>

我也不知道如何识别要从数据库中的现有记录中删除的选定职员名称。我正在提供完整的代码,以减轻想要帮助您更好地理解的任何人的负担。谢谢。

php laravel-5 dynamic insert-update
1个回答
0
投票

将此ajax调用转换为IIFE

$(function(){
    $(document).on('change', 'select.form-control.nama', function() {
        var PegID = jQuery(this).val();
        var row = $(this);
        // alert(PegID);
           if(PegID)
           {
              jQuery.ajax({
                 context: this,  
                 url : 'get_pegawai/'+PegID,
                 type : "GET",
                 dataType : "json",
                 success:function(data)
                 {
                    console.log(data);
                        $(this).closest('tr').find('td .form-control.pangkat').val(data.operasiname);
                        $(this).closest('tr').find('td .form-control.no').val(data.Nobadan);
                        $(this).closest('tr').find('td .form-control.bahagian').val(data.sectionname);
                        $(this).closest('tr').find('td .form-control.telefon').val(data.notelttp);
                        $(this).closest('tr').find('td .form-control.ext').val(data.ext);  
                 }
              });
           }
           else
           {
              $(this).closest('tr').find('td .form-control.pangkat').empty();
              $(this).closest('tr').find('td .form-control.no').empty();
              $(this).closest('tr').find('td .form-control.bahagian').empty();
              $(this).closest('tr').find('td .form-control.telefon').empty();
              $(this).closest('tr').find('td .form-control.ext').empty();  
           }

    });
   });

并且还将控制器中的update()方法更改为save()方法。

© www.soinside.com 2019 - 2024. All rights reserved.