Belajar CodeIgniter 4 #9 : Delete Data dari Database

Halo semuanya, pada pembelajaran kali ini kita akan mencoba melakukan delete data di CodeIgniter 4. Pada pembelajaran sebelumnya kita sudah belajar cara update data di Codeigniter 4.

Jadi sekarang kita akan menghapus data yang ada di dalam database dengan menggunakan konsep MVC.

Pertama, kita buat terlebih dahulu method dengan nama delete di app/Controllers/Blog.php yang nantinya akan menerima parameter id untuk mendapatkan data blog yang akan dihapus.

Kita bisa menambahkan method baru dibagian palih bawah. Untuk codenya seperti dibawah ini.

public function delete($id)
{
      $data = [
          'title' => 'Delete a blog',
          'blog' => $this->blogModel->find($id),
      ];

      if ($this->request->getMethod() === 'post') {
          $this->blogModel->delete($id);

          return redirect()->to('/blog');
      } else {
          echo view('templates/header', $data);
          echo view('blogs/view', $data);
          echo view('templates/footer');
      }
}

Berikut ini penjelasan untuk code diatas.

  • Pada bagian atas kita buat public function dengan nama delete yang akan menerima paramter id blog.
  • Selanjutnya kita buat variable $data yang berisi data title dan blog yang akan dihapus.
  • Kemudian kita lakukan pengecekan apakah request methodnya sama dengan post.
  • Jika benar maka kita bisa memanggil method delete yang telah disediakan oleh codeigniter 4 untuk menghapus data. Jangan lupa untuk mengirimkan id blog yang akan dihapus. Terakhir kita redirect ke halaman awal blog.
  • Sedangkan, jika salah maka akan menampilkan tampilan view dari data blog yang akan dihapus.

Kita telah berhasil membuat method untuk melakukan delete data di codeigniter 4. Selanjutnya, kita akan membuat button agar dapat mentrigger method tersebut.

Disini kita akan menambahkan button yang nantinya akan mengarah ke method delete. Kita buka file app/Views/blog/index.php lalu kita tambahkan button dengan mengirimkan id dibagian url.

// before
<div class="card-footer">
    <a href="/blog/view/<?= $blog['blog_id'] ?>" class="btn btn-primary">View</a>
    <a href="/blog/edit/<?= $blog['blog_id'] ?>" class="btn btn-warning">Edit</a>
</div>

// after
<div class="card-footer">
    <a href="/blog/view/<?= $blog['blog_id'] ?>" class="btn btn-primary">View</a>
    <a href="/blog/edit/<?= $blog['blog_id'] ?>" class="btn btn-warning">Edit</a>
    <form action="/blog/delete/<?= $blog['blog_id'] ?>" method="post">
          <?= csrf_field() ?>
          <button class="btn btn-danger" type="submit">Delete</button>
    </form>
</div>

Pada code diatas kita menambahkan form untuk mentrigger method delete pada controller blog. Kita isi action dengan mengarah ke dalam method delete.

Di dalam tag form kita panggil crsf_field() untuk mengenerate hidden input field yang digunakan untuk menghindari crsf attack. Terakhir kita buat tombol button dengan type submit.

Selanjutnya, kita akan lakukan cara yang sama pada halaman view (single data blog). Kita buka terlebih dahulu file app/Views/blogs/view.php lalu kita buat form seperti diatas.

// before
<div class="col-lg-8 col-md-6">
   <h3 class="card-title"><?= esc($blog['blog_title']) ?></h3>
   <p class="card-text"><?= esc($blog['blog_description']) ?></p>
   <a href="/blog" class="btn btn-primary">Back</a>
   <a href="/blog/edit/<?= $blog['blog_id'] ?>" class="btn btn-warning">Edit</a>
</div>

// after
<div class="col-lg-8 col-md-6">
   <h3 class="card-title"><?= esc($blog['blog_title']) ?></h3>
   <p class="card-text"><?= esc($blog['blog_description']) ?></p>
   <a href="/blog" class="btn btn-primary">Back</a>
   <a href="/blog/edit/<?= $blog['blog_id'] ?>" class="btn btn-warning">Edit</a>
   <form action="/blog/delete/<?= $blog['blog_id'] ?>" method="post">
        <?= csrf_field() ?>
        <button class="btn btn-danger" type="submit">Delete</button>
   </form>
</div>

Kurang lebihnya untuk penjelasan code diatas sama seperti sebelumnya. Terakhir kita bisa langsung mencoba dengan klik tombol delete pada postingan blog yang ingin dihapus.

delete data di codeigniter 4

Penutup

Pada pembelajaran kali ini kita telah belajar cara delete data di codeigniter 4 menggunakan konsep MVC. Kita juga telah belajar create, read, update serta delete pada codeigniter 4.

Scroll to Top