> 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.2-menarik-data-dengan-buku-all.md).

# 6.2 Menarik Data dengan Buku::all()

## Menarik data dengan `Buku::all()`

Anak RPL, sekarang kita masuk ke praktik inti pertama di BAB 6.

Di bagian ini, Anda akan benar-benar mulai mengambil data buku dari database.

Perintah paling sederhana untuk itu adalah:

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

Kelihatannya sederhana.

Tetapi justru dari sinilah alur fitur **read** mulai terbentuk.

### Teori awal dan analogi

Bayangkan Anda meminta petugas perpustakaan:

> "Tolong tampilkan semua buku yang ada di rak."

Petugas itu tidak mengambil satu buku saja.

Petugas mengambil **seluruh daftar buku** yang ada.

Nah, `Buku::all()` bekerja seperti itu.

* `Buku` adalah petugasnya
* `all()` adalah perintah untuk mengambil semuanya

Jadi, Laravel akan membaca semua record dari tabel `buku`.

### Target praktik subbab ini

Setelah menyelesaikan subbab ini, Anda seharusnya bisa:

* membuat model `Buku`
* menghubungkan model ke tabel `buku`
* memanggil model dari controller
* mengambil semua data dengan `Buku::all()`
* menguji hasil awal di browser

### Langkah praktik step-by-step

Ikuti langkah berikut dengan urut dan jangan lompat-lompat.

{% stepper %}
{% step %}

### Buat model `Buku`

Buka terminal proyek Laravel.

Lalu jalankan perintah ini:

```bash
php artisan make:model Buku
```

Jika berhasil, Laravel akan membuat file model baru untuk `Buku`.
{% endstep %}

{% step %}

### Buka file model

Buka file:

`app/Models/Buku.php`

Kalau file berhasil dibuat, isinya akan berupa class model dasar dari Laravel.
{% endstep %}

{% step %}

### Hubungkan model ke tabel `buku`

Ubah isi file model menjadi seperti ini:

```php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Buku extends Model
{
    use HasFactory;

    protected $table = 'buku';
}
```

Baris `protected $table = 'buku';` wajib ada pada modul ini karena nama tabel kita tidak mengikuti tebakan default Laravel.
{% endstep %}

{% step %}

### Buka controller `BukuController`

Sekarang buka controller yang akan menangani halaman daftar buku.

Lokasinya biasanya ada di:

`app/Http/Controllers/BukuController.php`
{% endstep %}

{% step %}

### Isi method `index()`

Ubah atau lengkapi method `index()` menjadi seperti ini:

```php
<?php

namespace App\Http\Controllers;

use App\Models\Buku;

class BukuController extends Controller
{
    public function index()
    {
        $bukus = Buku::all();

        dd($bukus);
    }
}
```

Untuk sementara, kita pakai `dd($bukus)` dulu.

Tujuannya sederhana, yaitu memastikan data benar-benar berhasil diambil sebelum ditampilkan ke halaman.
{% endstep %}

{% step %}

### Cek route yang dipakai

Buka file:

`routes/web.php`

Pastikan route untuk halaman buku sudah ada.

Jika di BAB 4 Anda memakai resource route, biasanya bentuknya seperti ini:

```php
use App\Http\Controllers\BukuController;

Route::resource('buku', BukuController::class);
```

Jika route ini sudah ada, Anda tidak perlu menambah route baru.

Karena URL `/buku` otomatis akan diarahkan ke method `index()`.
{% endstep %}

{% step %}

### Uji hasil awal di browser

Sebelum membuka browser, pastikan server Laravel hidup.

Pilihan paling aman:

* nyalakan **Laragon** lalu klik **Start All**
* atau jalankan `php artisan serve` di terminal proyek

Setelah itu, buka URL:

```
http://127.0.0.1:8000/buku
```

atau sesuaikan dengan domain lokal dari Laragon Anda.

Jika berhasil, browser akan menampilkan dump data dari `$bukus`.
{% endstep %}
{% endstepper %}

### Penjelasan pasca-praktik

Sekarang mari kita bedah kodenya pelan-pelan.

#### 1. `use App\Models\Buku;`

Baris ini mengimpor model `Buku` ke controller.

Tanpa baris ini, controller tidak tahu class `Buku` yang mana.

#### 2. `$bukus = Buku::all();`

Baris ini menjalankan query ke database.

Laravel akan membaca seluruh data dari tabel yang dipakai model `Buku`.

Karena model diarahkan ke tabel `buku`, maka yang dibaca adalah tabel `buku`.

#### 3. `dd($bukus);`

`dd()` adalah singkatan dari **dump and die**.

Fungsinya:

* menampilkan isi variabel
* lalu menghentikan proses program

Fitur ini sangat berguna saat Anda ingin mengecek hasil query dengan cepat.

#### 4. Kenapa hasilnya bernama `$bukus`

Karena isinya lebih dari satu data.

Bukan satu buku.

Tetapi kumpulan banyak buku.

Nama variabel jamak seperti `$bukus` membuat isi datanya lebih mudah dipahami sejak awal.

### Aliran data teknis

Saat URL `/buku` dibuka, alurnya seperti ini:

1. browser mengirim request
2. route menerima request itu
3. route memanggil `BukuController@index`
4. method `index()` menjalankan `Buku::all()`
5. model `Buku` membaca tabel `buku`
6. hasil data disimpan ke `$bukus`
7. `dd($bukus)` menampilkan isi data ke browser

Kalau dump data sudah tampil, artinya jalur dari model ke database sudah berhasil.

Itu kabar bagus.

Artinya, kita siap melanjutkan ke tampilan pada subbab berikutnya.

### Output yang harus terlihat

Setelah subbab ini selesai, hasil berikut seharusnya sudah terlihat:

* file `app/Models/Buku.php` berhasil dibuat
* model `Buku` memakai `protected $table = 'buku';`
* method `index()` di `BukuController` memanggil `Buku::all()`
* halaman `/buku` menampilkan hasil `dd($bukus)` berisi collection data buku

### Troubleshooting yang paling sering

Masalah yang paling sering muncul:

* **`Class "App\Models\Buku" not found`** — model belum dibuat atau belum di-import
* **`Base table or view not found`** — tabel `buku` belum ada atau nama tabel salah
* **halaman kosong** — tabel `buku` kosong karena seeder belum dijalankan
* **`404 Not Found`** — route `/buku` belum aktif
* **`Target class [BukuController] does not exist`** — import controller di route salah

{% hint style="warning" %}
Jika model sudah benar tetapi query gagal, cek lagi nama tabel. Di modul ini tabelnya bernama `buku`, bukan `bukus`.
{% endhint %}

{% hint style="info" %}
Jangan panik jika browser menampilkan data yang berantakan saat memakai `dd()`. Itu normal. `dd()` memang dibuat untuk debugging, bukan tampilan akhir.
{% endhint %}

### Poin evaluasi bab 6.2

Pastikan Anda sudah memahami poin berikut:

* Saya tahu perintah membuat model adalah `php artisan make:model Buku`.
* Saya tahu model `Buku` perlu diarahkan ke tabel `buku`.
* Saya paham `Buku::all()` mengambil seluruh data dari tabel terkait.
* Saya bisa menulis `use App\Models\Buku;` di controller.
* Saya bisa mengetes isi data dengan `dd($bukus)`.
* Saya paham tahap ini masih fokus memastikan query berhasil lebih dulu.
* Saya siap mengganti `dd($bukus)` dengan `return view(...)` pada subbab berikutnya.

Jika semuanya sudah jelas, lanjut ke [6.3 Menampilkan Data ke Tabel HTML](/laravel/bab-6-fitur-read/6.3-menampilkan-data-ke-tabel-html.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.2-menarik-data-dengan-buku-all.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.
