使用Update()或save()更新代码点火器4中的数据-由于缺少ID而无法工作



我试图使用update()更新数据库,但其中没有id。相反,我有一个名为kwt的主键。

每次我尝试执行update()时,查询总是引用table.id而不是table.kwt

UPDATE `zakat` SET `nama` = :nama:, `alamat` = :alamat:, `telp` = :telp:, `jmlhjiwa` = :jmlhjiwa:, `berasbeli` = :berasbeli:, `ttlbeli` = :ttlbeli:, `berasbawa` = :berasbawa:, `ttlberas` = :ttlberas:, `maal` = :maal:, `berasinfaq` = :berasinfaq:, `infaq` = :infaq:, `fidyah` = :fidyah:, `penerima` = :penerima: WHERE `zakat`.`id` IN :zakat.kwt:

我需要使WHERE 'zakat'.'id'变成WHERE 'zakat'.'kwt'

这是我的控制器:

public function update($kwt)
{
$beli = $this->request->getvar('berasbeli');

$this->zakatModel->update(

[
'kwt' => $kwt,
'nama' => $this->request->getVar('nama'),
'alamat' => $this->request->getVar('alamat'),
'telp' => $this->request->getvar('telp'),
'jmlhjiwa' => $this->request->getVar('jmlhjiwa'),
'berasbeli' => $this->request->getVar('berasbeli'),
'ttlbeli' =>  (int)$beli * 38000,
'berasbawa' => $this->request->getvar('berasbawa'),
'ttlberas' => $this->request->getvar('berasbawa') + $this->request->getVar('berasbeli'),
'maal' => $this->request->getVar('maal'),
'berasinfaq' => $this->request->getVar('berasinfaq'),
'infaq' => $this->request->getvar('infaq'),
'fidyah' => $this->request->getVar('fidyah'),
'penerima' => $this->request->getVar('penerima')
]
);

session()->setFlashdata('pesan', 'Upload Berhasil');

return redirect()->to('/');
}

我的观点:

>     <?= $this->extend('layout/template'); ?>
>     <?= $this->section('content'); ?>
>     <div class="container">
>         <div class="row">
>             <div class="col-8">
>                 <form action="/Pages/update/<?= $muzaki['kwt']; ?>" method="post">
>                     <?= csrf_field(); ?>
>                     <input type="hidden" name="kwt" value"<?= $muzaki['nama']; ?>">
>                     <div class="row mb-3">
>                         <label for="nama" class="col-sm-2 col-form-label">Nama</label>
>                         <div class="col-sm-10">
>                             <input type="text" class="form-control" id="nama" name="nama" autofocus value="<?= $muzaki['nama']; ?>">
>                         </div>
>                     </div>
>                     <div class="row mb-3">
>                         <label for="alamat" class="col-sm-2 col-form-label">Alamat</label>
>                         <div class="col-sm-10">
>                             <input type="text" class="form-control" id="alamat" name="alamat" value="<?= $muzaki['alamat']; ?>">
>                         </div>
>                     </div>
>                     <div class="row mb-3">
>                         <label for="telp" class="col-sm-2 col-form-label">No.Telp</label>
>                         <div class="col-sm-10">
>                             <input type="text" class="form-control" id="telp" name="telp" value="<?= $muzaki['telp']; ?>">
>                         </div>
>                     </div>
>                     <br>
>                     <h3>Zakat Fitrah :</h3>
>                     <div class=" row mb-3">
>                         <label for="jmlhjiwa" class="col-sm-2 col-form-label">Anggota Keluarga</label>
>                         <div class="col-sm-10">
>                             <input type="number" class="form-control" id="jmlhjiwa" name="jmlhjiwa" value="<?= $muzaki['jmlhjiwa']; ?>">
>                         </div>
>                     </div>
>                     <div class="row mb-3">
>                         <label for="berasbeli" class="col-sm-2 col-form-label">Beras Dalam</label>
>                         <div class="col-sm-10">
>                             <input type="number" class="form-control" id="berasbeli" name="berasbeli" value="<?= $muzaki['berasbeli']; ?>">
>                         </div>
>                     </div>
>                     <div class="row mb-3">
>                         <label for="berasbawa" class="col-sm-2 col-form-label">Beras Luar</label>
>                         <div class="col-sm-10">
>                             <input type="number" class="form-control" id="berasbawa" name="berasbawa" value="<?= $muzaki['berasbawa']; ?>">
>                         </div>
>                     </div>
>                     <br>
>                     <h3>Zakat Maal :</h3>
>                     <div class="row mb-3">
>                         <label for="maal" class="col-sm-2 col-form-label">Zakat Maal</label>
>                         <div class="col-sm-10">
>                             <input type="number" class="form-control" id="maal" name="maal" value="<?= $muzaki['maal']; ?>">
>                         </div>
>                     </div>
>                     <br>
>                     <h3>Infaq :</h3>
>                     <div class="row mb-3">
>                         <label for="berasinfaq" class="col-sm-2 col-form-label">Beras</label>
>                         <div class="col-sm-10">
>                             <input type="number" class="form-control" id="berasinfaq" name="berasinfaq" value="<?= $muzaki['berasinfaq'];
> ?>">
>                         </div>
>                     </div>
>                     <div class="row mb-3">
>                         <label for="infaq" class="col-sm-2 col-form-label">infaq</label>
>                         <div class="col-sm-10">
>                             <input type="number" class="form-control" id="infaq" name="infaq" value="<?= $muzaki['infaq']; ?>">
>                         </div>
>                     </div>
>                     <div class="row mb-3">
>                         <label for="fidyah" class="col-sm-2 col-form-label">Fidyah</label>
>                         <div class="col-sm-10">
>                             <input type="number" class="form-control" id="fidyah" name="fidyah" value="<?= $muzaki['fidyah']; ?>">
>                         </div>
>                     </div>
>                     <br><br>
>                     <div class="row mb-3">
>                         <label for="penerima" class="col-sm-2 col-form-label">Penerima</label>
>                         <div class="col-sm-10">
>                             <input type="text" class="form-control" id="penerima" name="penerima" value="<?= $muzaki['penerima']; ?>">
>                         </div>
>                     </div><br><br>
>                     <button type="submit" class="btn btn-primary">Submit</button>
>                 </form>
>             </div>
>         </div>
>     </div>
>     <?= $this->endsection(); ?>

对于我的模型,我还没有写任何东西,因为我的教程模型中没有写任何内容。当我使用save()而不是update()时,它将创建具有相同主键的新数据。

它需要表的id来更新数据;您的id已被遗忘

看看我的示例

function dommy($id, $data){
$myModel = new MyModel();
$myModel->update( $id, $data);
}

更新记录时,需要确定要更新的记录。它应该是由像id这样的主键定义的,或者是由具有不同列的WHEREsql子句定义的。

它应该像下面的一样:

$this->zakatModel->update($id, [
...
]);
// OR
$data = [
...
];
$data['id'] = 4 // for example. You can send with form or you can get from URL.
$this->zekatModel->save($data);

save方法中,不需要将id值作为单独的参数。因为在方法内部,它会检查自己:

protected function save($data) {
...
$this->update($this->getIdValue($data), $data);
}

快乐编码。。

最新更新