> For the complete documentation index, see [llms.txt](https://learn.devlabss.my.id/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://learn.devlabss.my.id/laravel/bab-8-fitur-update-and-delete/8.1-konsep-id-and-urgensi-primary-key.md).

# 8.1 Konsep ID & Urgensi Primary Key

## Konsep ID & urgensi primary key

Yuk kita mulai BAB 8.

Kalau BAB 7 fokus menambah data baru, sekarang kita mulai belajar mengubah dan menghapus data lama.

Di titik ini, ada satu hal yang sangat penting.

Yaitu **ID**.

Tanpa ID yang jelas, Laravel akan kesulitan mengetahui data mana yang ingin diedit atau dihapus.

### Target belajar BAB 8

Setelah menyelesaikan BAB 8, Anda diharapkan bisa:

* menjelaskan fungsi ID dan primary key
* membuka form edit dari data yang tepat
* memperbarui data lama
* menghapus data yang dipilih
* memakai method `PUT` dan `DELETE` dengan benar

### Teori awal dan analogi

Anak RPL, bayangkan ada tiga buku di perpustakaan dengan judul yang hampir mirip.

Kalau petugas hanya melihat judulnya, bisa saja buku yang dipilih salah.

Karena itu, setiap buku biasanya punya kode unik.

Kode itulah yang membedakan satu buku dari buku lainnya.

Di database, peran itu dijalankan oleh **primary key**.

Pada tabel `buku`, primary key yang paling umum adalah kolom `id`.

Jadi:

* judul bisa mirip
* penulis bisa sama
* penerbit bisa sama
* tetapi `id` harus tetap unik

### Apa itu primary key

Primary key adalah kolom utama yang nilainya unik pada setiap baris data.

Biasanya Laravel otomatis membuat kolom `id` saat Anda memakai `$table->id()` di migration.

Kolom ini sangat penting karena dipakai untuk:

* mencari satu data tertentu
* mengedit data yang tepat
* menghapus data yang tepat
* membuat relasi antar tabel

### Kenapa BAB 8 sangat bergantung pada ID

Pada fitur **read**, kita hanya menampilkan daftar data.

Tetapi pada fitur **update** dan **delete**, aplikasi harus memilih satu data yang spesifik.

Misalnya:

* buku dengan `id = 3` ingin diedit
* buku dengan `id = 5` ingin dihapus

Kalau tidak ada ID yang unik, Laravel tidak punya penanda yang aman untuk memilih data yang benar.

### Gambaran besar alur BAB 8

Supaya tidak bingung, pahami dulu alur besar bab ini.

```
klik tombol edit/hapus -> kirim ID data -> controller mencari data -> update atau delete dijalankan -> browser menampilkan hasil terbaru
```

Alur ini terlihat sederhana.

Tetapi inti logikanya sangat penting.

Karena di sinilah aplikasi mulai benar-benar mengelola data yang sudah ada.

### Langkah praktik ringan sebelum lanjut

Sebelum masuk ke praktik edit dan hapus, cek dulu kondisi proyek Anda.

{% stepper %}
{% step %}

### Pastikan tabel `buku` sudah berisi data

BAB 8 akan jauh lebih mudah dipahami kalau Anda sudah punya beberapa data buku.

Kalau tabel masih kosong, isi dulu lewat fitur tambah buku dari BAB 7.
{% endstep %}

{% step %}

### Pastikan halaman daftar buku sudah tampil normal

Buka halaman `/buku`.

Pastikan daftar buku bisa tampil tanpa error.

Nanti tombol edit dan hapus akan ditambahkan di halaman ini.
{% endstep %}

{% step %}

### Periksa apakah kolom `id` memang ada

Kalau perlu, cek struktur tabel `buku` di database Anda.

Pastikan kolom `id` memang ada sebagai penanda utama.
{% endstep %}
{% endstepper %}

### Penjelasan pasca-praktik

Sebelum menulis kode, Anda perlu paham satu hal penting.

Saat pengguna menekan tombol **Edit** atau **Hapus**, yang sebenarnya dikirim bukan seluruh data buku.

Yang dikirim lebih dulu biasanya adalah **ID**.

Setelah itu, controller akan mencari data berdasarkan ID tersebut.

Kalau datanya ketemu, barulah Laravel menjalankan proses berikutnya.

### Contoh logika sederhana

Misalnya Anda punya data seperti ini:

* `id = 1` — Laravel Dasar
* `id = 2` — Pemrograman Web
* `id = 3` — Basis Data

Kalau pengguna ingin mengubah **Basis Data**, maka yang dicari controller adalah `id = 3`.

Bukan sekadar judulnya.

Karena judul bisa berubah.

Tetapi ID tetap menjadi penanda utamanya.

### Troubleshooting yang paling sering

Masalah yang paling sering muncul di awal BAB 8:

* mengira judul bisa dipakai sebagai pengganti ID
* tidak sadar bahwa tombol edit harus membawa data tertentu
* lupa bahwa proses hapus juga butuh penanda data yang spesifik

{% hint style="warning" %}
Jangan memakai judul sebagai penanda utama data. Judul bisa sama, bisa typo, dan bisa berubah.
{% endhint %}

{% hint style="info" %}
Kalau tabel Anda dibuat dengan migration standar Laravel, kolom `id` biasanya sudah tersedia secara otomatis.
{% endhint %}

### Output yang harus terlihat

Setelah menyelesaikan BAB 8, hasil minimal yang seharusnya sudah ada:

* tombol edit dan hapus tampil pada daftar buku
* halaman edit memuat data lama
* perubahan data tersimpan dengan benar
* data yang dihapus hilang dari tabel daftar

### Poin evaluasi bab 8.1

Pastikan Anda sudah memahami poin berikut:

* Saya paham setiap data butuh ID yang unik.
* Saya paham primary key biasanya berupa kolom `id`.
* Saya paham fitur edit dan hapus sangat bergantung pada ID.
* Saya paham controller akan mencari data berdasarkan penanda unik itu.

Jika semuanya sudah jelas, lanjut ke [8.2 Membuat Fitur Edit & Update Data](/laravel/bab-8-fitur-update-and-delete/8.2-membuat-fitur-edit-and-update-data.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://learn.devlabss.my.id/laravel/bab-8-fitur-update-and-delete/8.1-konsep-id-and-urgensi-primary-key.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
