Larapak
Ctrl K

Fluent Query Builder

Larapak menyediakan antarmuka Query Builder yang ekspresif, aman dari serangan SQL Injection dengan parameterized query, dan mudah dibaca:

# Mengambil semua baris dari tabel pengguna
semua_pengguna = db.tabel("pengguna").pilih().jupuk()

# Query dengan filter kondisi (WHERE)
aktif = db.tabel("pengguna") \
    .pilih(["id", "nama", "email"]) \
    .ngendi("status", "=", "aktif") \
    .ngendi("umur", ">=", 18) \
    .urutna("nama", "ASC") \
    .watesi(10) \
    .jupuk()

# Mengambil baris pertama saja
siji = db.tabel("pengguna").ngendi("email", "=", "[email protected]").siji()

Operasi CRUD (Create, Read, Update, Delete)

Menambah Data Baru (Insert)

id_anyar = db.tabel("pengguna").lebokna([
    "nama": "Bambang",
    "email": "[email protected]",
    "status": "aktif"
])

Memperbarui Data (Update)

db.tabel("pengguna") \
    .ngendi("id", "=", 5) \
    .anyari(["status": "nonaktif", "nama": "Bambang S."])

Menghapus Data (Delete)

db.tabel("pengguna").ngendi("id", "=", 5).busak()

Model ORM & Eager Loading (Anti N+1)

File model ORM ditempatkan di jeroan/Wujud/. Buat model baru melalui perintah CLI:

# Dialek Ngapak
ngapakin gawe:wujud Produk

# Alias standar
ngapakin make:model Produk

Untuk menghindari masalah klasik performa N+1 Query saat menampilkan data berelasi, gunakan eager loading dengan metode karo():

# Mengambil postingan beserta seluruh komentar dan data penulis dalam satu batch query optimal
artikel = Postingan.karo(["penulis", "komentar"]).ngendi("status", "=", "publikasi").jupuk()

Database Seeder (Pengisian Data Awal)

Larapak menyediakan sistem Seeder untuk mengisi data awal (seperti akun administrator, kategori default, atau data dummy pengujian) secara otomatis.

1. Membuat Berkas Seeder

# Dialek Ngapak Asli
ngapakin gawe:bibit ProdukSeeder

# Alias standar
ngapakin make:seeder ProdukSeeder

File seeder disimpan di lumbung/bibit/ProdukSeeder.ngpk:

# Database Seeder ProdukSeeder untuk Larapak
gawe tandang()
    db.tabel("produk").lebokna([
        "nama": "Kopi Banyumas Asli",
        "harga": 25000,
        "status": "tersedia"
    ])
    tulis("Seeder ProdukSeeder selesai dijalankan.")
rampung

2. Menjalankan Seeder

# Menjalankan seeder langsung
ngapakin bibiti
# Atau: ngapakin db:seed

# Menjalankan seeder bersamaan dengan fresh migration
ngapakin migrasi:anyar --seed
# Atau: ngapakin migrate:fresh --seed