> 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-6-fitur-read/6.1-pengenalan-eloquent-orm.md).

# 6.1 Pengenalan Eloquent ORM

## Pengenalan Eloquent ORM

Yuk kita mulai BAB 6.

Di bab ini, aplikasi E-Library mulai belajar membaca data dari database.

Pada BAB 5, Anda sudah membuat tabel `buku`.

Anda juga sudah mengisi tabel itu dengan data dummy.

Sekarang tugas Laravel bukan hanya menyimpan data.

Laravel juga harus bisa mengambil data itu lalu menampilkannya ke halaman.

Di sinilah **Eloquent ORM** mulai berperan.

### Target belajar BAB 6

Setelah menyelesaikan BAB 6, Anda diharapkan bisa:

* menjelaskan fungsi Eloquent ORM
* menghubungkan model dengan tabel yang benar
* mengambil data dari database lewat model
* mengirim data ke controller dan view
* menampilkan daftar data di Blade

### Teori awal dan analogi

Anak RPL, bayangkan perpustakaan sekolah punya rak yang penuh buku.

Rak itu menyimpan banyak data.

Tetapi siswa tidak masuk sendiri ke gudang lalu mencari data satu per satu.

Biasanya ada petugas yang membantu mengambilkan informasi buku yang dibutuhkan.

Dalam Laravel:

* **database** adalah gudang data
* **tabel `buku`** adalah rak buku
* **model `Buku`** adalah petugas yang mengenali data buku
* **controller** adalah pengatur permintaan
* **view Blade** adalah halaman yang dilihat pengguna

Jadi, Eloquent adalah cara Laravel berkomunikasi dengan database lewat model.

Artinya, kita tidak selalu menulis SQL mentah seperti:

```sql
SELECT * FROM buku;
```

Sebagai gantinya, kita bisa menulis:

```php
Buku::all();
```

Perintahnya lebih singkat.

Lebih mudah dibaca.

Dan jauh lebih ramah untuk pemula.

### Apa arti ORM

ORM adalah singkatan dari **Object Relational Mapping**.

Istilahnya memang terdengar cukup berat.

Tapi konsep dasarnya sebenarnya sederhana.

ORM menghubungkan:

* object di PHP
* dengan data di tabel database

Jadi, satu model biasanya mewakili satu tabel.

Pada modul ini:

* model `Buku` mewakili tabel `buku`
* setiap data buku akan dibaca lewat model itu

### Kenapa Eloquent penting di proyek ini

Tanpa Eloquent, alur bab berikutnya akan terasa lebih rumit.

Karena nanti Anda akan:

* menampilkan daftar buku
* mengambil satu buku tertentu
* menambah buku baru
* mengubah data buku
* menghapus data buku

Semua itu akan jauh lebih mudah jika model sudah dipahami.

### Hubungan model dengan tabel pada modul ini

Di sini ada satu hal penting yang perlu Anda ingat.

Laravel biasanya menebak nama tabel dari nama model.

Kalau nama modelnya `Buku`, Laravel biasanya menebak nama tabelnya `bukus`.

Tetapi pada modul ini, tabel yang Anda buat bernama `buku`.

Karena itu, model `Buku` nanti perlu diarahkan secara manual ke tabel `buku`.

Kalau tidak, Laravel bisa mencoba membaca tabel yang salah.

### Gambaran besar alur BAB 6

Supaya tidak bingung di tengah praktik, pahami dulu alur besar bab ini.

```
database -> model -> controller -> view -> browser
```

Alurnya seperti ini:

1. data buku sudah ada di MySQL
2. model `Buku` mengambil data dari tabel `buku`
3. controller menerima data itu
4. controller mengirim data ke Blade
5. Blade menampilkan data ke halaman browser

Bab ini fokus pada fitur **read**.

Artinya, fokus kita adalah **membaca** dan **menampilkan** data.

### Langkah praktik ringan sebelum lanjut

Sebelum mengetik kode di subbab berikutnya, cek dulu struktur proyek Anda.

{% stepper %}
{% step %}

### Buka proyek di VS Code

Pastikan folder proyek Laravel E-Library sudah terbuka penuh di VS Code.

Jangan hanya membuka satu file.

Buka seluruh folder proyeknya.
{% endstep %}

{% step %}

### Periksa folder penting

Pastikan Anda bisa melihat folder berikut:

* `app/Models`
* `app/Http/Controllers`
* `resources/views`
* `routes`

Folder inilah yang paling sering dipakai di BAB 6.
{% endstep %}

{% step %}

### Pastikan data dummy sudah ada

Sebelum masuk praktik, pastikan seeder BAB 5 sudah pernah dijalankan.

Kalau tabel `buku` masih kosong, hasil BAB 6 nanti ikut kosong.
{% endstep %}
{% endstepper %}

### Penjelasan pasca-praktik

Kita mulai dari pemahaman alur lebih dulu karena banyak siswa langsung mengetik kode tanpa tahu data bergerak ke mana.

Akibatnya, saat error muncul, mereka mudah panik.

Padahal sumber masalah biasanya hanya ada di satu titik:

* model belum benar
* controller belum memanggil model
* view belum menerima data

Kalau alurnya sudah dipahami, proses debugging terasa jauh lebih tenang.

### Pojok troubleshooting

{% hint style="warning" %}
Jangan panik jika nanti data belum tampil. Pada BAB 6, error paling sering bukan di database, tetapi di alur data antarfile.
{% endhint %}

Kesalahan yang paling sering terjadi:

* mengira Eloquent adalah database
* mengira model pasti otomatis cocok dengan nama tabel
* mengira view bisa membaca data tanpa dikirim controller

{% hint style="info" %}
Eloquent bukan pengganti MySQL. Eloquent adalah jembatan antara kode Laravel dan database.
{% endhint %}

### Output yang harus terlihat

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

* model `Buku` berhasil membaca tabel `buku`
* halaman daftar buku bisa dibuka
* data dari database tampil di Blade
* nomor urut otomatis muncul rapi di tabel

### Poin evaluasi bab 6.1

Pastikan Anda sudah memahami poin berikut:

* Saya paham Eloquent dipakai untuk mengakses database lewat model.
* Saya paham model `Buku` akan mewakili tabel `buku`.
* Saya paham controller menjadi penghubung antara model dan view.
* Saya paham BAB 6 fokus pada fitur read.
* Saya paham nama tabel buatan sendiri kadang harus ditulis manual di model.

Jika semuanya sudah jelas, lanjut ke [6.2 Menarik Data dengan Buku::all()](/laravel/bab-6-fitur-read/6.2-menarik-data-dengan-buku-all.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-6-fitur-read/6.1-pengenalan-eloquent-orm.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.
