Laravel 中的编辑表单:创建新条目而不是更新旧数据

Edit Form in Laravel: Creates New Entry instead of Updating Old Data

我尝试在提交表单数据时创建编辑方法,但它没有更新旧条目,而是在数据库中创建了一个新条目。

我的源文件是: web.php

Route::get('/input_gedung_bangunan/{id_bangunan}', 'input_gedung_bangunan@tampiledit');
Route::post('/data_gedung_bangunan/hitung_data', 'input_gedung_bangunan@store');

控制器:

public function store(Request $request){
        //DB::enableQueryLog();
        //$id_bangunan = $id;
        $validation = \App\Tbl_uraian_datas::where('id_bangunan', '=', $request->get('id_bangunan'))->first();
        if(is_null($validation)){
        $tbl_uraian_datas = new \App\Tbl_uraian_datas;
        $tbl_uraian_datas->id_bangunan = $request->get('id_bangunan');
        $tbl_uraian_datas->id_kanwil = Input::get('IDKanwil');
        $tbl_uraian_datas->id_kota_kab = Input::get('IDKotaKab');            
        $tbl_uraian_datas->nomor_baris = Input::get('NomorBaris');
        $tbl_uraian_datas->nama_bangunan = Input::get('NamaBangunan');
        $tbl_uraian_datas->alamat_bangunan = Input::get('AlamatBangunan');
        $tbl_uraian_datas->nama_kota_kab = Input::get('Kota/Kabupaten');    
        $tbl_uraian_datas->kode_barang = Input::get('KodeBarang');
        $tbl_uraian_datas->nup_barang = Input::get('NUPBarang');
        $tbl_uraian_datas->luas_lantai = Input::get('LuasLantai');
        $tbl_uraian_datas->jumlah_lantai = Input::get('JumlahLantai');
        $tbl_uraian_datas->tahun_penilaian = Input::get('TahunPenilaian');
        $tbl_uraian_datas->tahun_dibangun = Input::get('TahunDibangun');
        $tbl_uraian_datas->tahun_direnovasi = Input::get('TahunDirenovasi');
        $tbl_uraian_datas->id_jenis_bangunan = Input::get('IDJenisBangunan');
        $tbl_uraian_datas->jenis_bangunan = Input::get('JenisBangunan');
        $tbl_uraian_datas->id_kategori = Input::get('IDKategoriBangunan');
        $tbl_uraian_datas->kategori_bangunan = Input::get('KategoriBangunan');
        $tbl_uraian_datas->id_kondisi = Input::get('IDKondisiBangunan');
        $tbl_uraian_datas->kondisi_bangunan = Input::get('KondisiBangunan');
        $tbl_uraian_datas->luas_carport = Input::get('LuasCarport');
        $tbl_uraian_datas->panjang_pagar_material1 = Input::get('PanjangPagar1');
        $tbl_uraian_datas->panjang_pagar_material2 = Input::get('PanjangPagar2');
        $tbl_uraian_datas->panjang_pagar_material3 = Input::get('PanjangPagar3');
        $tbl_uraian_datas->harga_per_m2 = Input::get('Hargaperm2');
        $tbl_uraian_datas->alasan_fisik = Input::get('Alasan1');
        $tbl_uraian_datas->penyusutan = Input::get('Penyusutan');
        $tbl_uraian_datas->alasan_penyusutan = Input::get('Alasan2');
        $tbl_uraian_datas->save();
        
        }else{
          //Edit Data Gedung/Bangunan
        $tbl_uraian_datas = \App\Tbl_uraian_datas::update(['id_kanwil' =>  Input::get('IDKanwil'), 'id_kota_kab' =>  Input::get('IDKotaKab'), 'nomor_baris' =>  Input::get('NomorBaris'),'nama_bangunan' => Input::get('nama_bangunan'),'alamat_bangunan' => Input::get('AlamatBangunan'),'nama_kota_kab' => Input::get('Kota/Kabupaten'),'kode_barang' => Input::get('KodeBarang'),'nup_barang' => Input::get('NUPBarang'),'luas_lantai' => Input::get('LuasLantai'),'jumlah_lantai' => Input::get('JumlahLantai'),'tahun_penilaian' => Input::get('TahunPenilaian'),'tahun_dibangun' => Input::get('TahunDibangun'),'tahun_direnovasi' => Input::get('TahunDirenovasi'),'id_jenis_bangunan' => Input::get('IDJenisBangunan'),'jenis_bangunan' => Input::get('JenisBangunan'),'id_kategori' => Input::get('IDKategoriBangunan'),'kategori_bangunan' => Input::get('KategoriBangunan'),'id_kondisi' => Input::get('IDKondisiBangunan'),'kondisi_bangunan' => Input::get('KondisiBangunan'),'luas_carport' => Input::get('LuasCarport'),'panjang_pagar_material1' => Input::get('PanjangPagar1'),'panjang_pagar_material2' => Input::get('PanjangPagar2'),'panjang_pagar_material3' => Input::get('PanjangPagar3'),'harga_per_m2' => Input::get('Hargaperm2'),'alasan_fisik' => Input::get('Alasan1'),'penyusutan' => Input::get('Penyusutan'),'alasan_penyusutan' => Input::get('Alasan2')]);

        //$tbl_hasil_perhitungans = \App\Tbl_hasil_perhitungans::where('id_bangunan', '=',$request->get('id_bangunan'))->update(['umur_efektif_bangunan' =>  Input::get('nUmurEfektifBangunan'), 'pembulatan' =>  Input::get('nPembulatan')]);
        

        $request->session()->flash('alert-success', 'Data Gedung Bangunan was successfully added!');
        
        return back();            
        }
     }

看起来控制器一直在为编辑后的数据创建新的 id,我不知道我的控制器做错了什么。

而不是代码中的以下行:

$validation = \App\Tbl_uraian_datas::where('id_bangunan', '=', $request->get('id_bangunan'))->first();
if(is_null($validation)){

试试这个:

$validation = \App\Tbl_uraian_datas::where('id_bangunan', $request->input('id_bangunan'))->first();
if(empty($validation)){

而不是

$tbl_uraian_datas = \App\Tbl_uraian_datas::update(['id_kanwil' =>  Input::get('IDKanwil'), 'id_kota_kab' =>  Input::get('IDKotaKab'), 'nomor_baris' =>  Input::get('NomorBaris'),'nama_bangunan' => Input::get('nama_bangunan'),'alamat_bangunan' => Input::get('AlamatBangunan'),'nama_kota_kab' => Input::get('Kota/Kabupaten'),'kode_barang' => Input::get('KodeBarang'),'nup_barang' => Input::get('NUPBarang'),'luas_lantai' => Input::get('LuasLantai'),'jumlah_lantai' => Input::get('JumlahLantai'),'tahun_penilaian' => Input::get('TahunPenilaian'),'tahun_dibangun' => Input::get('TahunDibangun'),'tahun_direnovasi' => Input::get('TahunDirenovasi'),'id_jenis_bangunan' => Input::get('IDJenisBangunan'),'jenis_bangunan' => Input::get('JenisBangunan'),'id_kategori' => Input::get('IDKategoriBangunan'),'kategori_bangunan' => Input::get('KategoriBangunan'),'id_kondisi' => Input::get('IDKondisiBangunan'),'kondisi_bangunan' => Input::get('KondisiBangunan'),'luas_carport' => Input::get('LuasCarport'),'panjang_pagar_material1' => Input::get('PanjangPagar1'),'panjang_pagar_material2' => Input::get('PanjangPagar2'),'panjang_pagar_material3' => Input::get('PanjangPagar3'),'harga_per_m2' => Input::get('Hargaperm2'),'alasan_fisik' => Input::get('Alasan1'),'penyusutan' => Input::get('Penyusutan'),'alasan_penyusutan' => Input::get('Alasan2')]);

尝试:

$tbl_uraian_datas = \App\Tbl_uraian_datas::where('id_bangunan',$request->input('id_bangunan'))->update(['id_kanwil' =>  Input::get('IDKanwil'), 'id_kota_kab' =>  Input::get('IDKotaKab'), 'nomor_baris' =>  Input::get('NomorBaris'),'nama_bangunan' => Input::get('nama_bangunan'),'alamat_bangunan' => Input::get('AlamatBangunan'),'nama_kota_kab' => Input::get('Kota/Kabupaten'),'kode_barang' => Input::get('KodeBarang'),'nup_barang' => Input::get('NUPBarang'),'luas_lantai' => Input::get('LuasLantai'),'jumlah_lantai' => Input::get('JumlahLantai'),'tahun_penilaian' => Input::get('TahunPenilaian'),'tahun_dibangun' => Input::get('TahunDibangun'),'tahun_direnovasi' => Input::get('TahunDirenovasi'),'id_jenis_bangunan' => Input::get('IDJenisBangunan'),'jenis_bangunan' => Input::get('JenisBangunan'),'id_kategori' => Input::get('IDKategoriBangunan'),'kategori_bangunan' => Input::get('KategoriBangunan'),'id_kondisi' => Input::get('IDKondisiBangunan'),'kondisi_bangunan' => Input::get('KondisiBangunan'),'luas_carport' => Input::get('LuasCarport'),'panjang_pagar_material1' => Input::get('PanjangPagar1'),'panjang_pagar_material2' => Input::get('PanjangPagar2'),'panjang_pagar_material3' => Input::get('PanjangPagar3'),'harga_per_m2' => Input::get('Hargaperm2'),'alasan_fisik' => Input::get('Alasan1'),'penyusutan' => Input::get('Penyusutan'),'alasan_penyusutan' => Input::get('Alasan2')]);

您需要通过提供 where 子句

来告诉实际更新哪一行