Model & Database

Model dalam LamdaPHP digunakan untuk merepresentasikan struktur data dari tabel di database Anda. Framework ini menyediakan kelas dasar Model yang memudahkan interaksi dan manipulasi data secara efisien.

1. Konfigurasi Database

Sebelum menggunakan Model, Anda wajib mengatur konfigurasi koneksi database. Buka file konfigurasi yang terletak di app/config/database.php dan sesuaikan dengan kredensial server Anda.

app/config/database.php
return [
    'host'     => '127.0.0.1',
    'database' => 'lamda_db',
    'username' => 'root',
    'password' => '',
];

2. Membuat Model via CLI

Cara paling cepat untuk membuat Model baru adalah menggunakan perintah CLI (Console) bawaan LamdaPHP. Jalankan perintah berikut di terminal Anda:

$ php lamda make:model Artikel

Perintah di atas akan secara otomatis membuat file Artikel.php di dalam folder app/Models/.

3. Struktur Dasar Model

Secara default, sebuah Model di LamdaPHP akan mewarisi kelas core Model. Anda bisa mendefinisikan nama tabel secara eksplisit jika nama tabel di database berbeda dengan nama kelas.

app/Models/Artikel.php
<?php

namespace App\Models;

use Lamda\Core\Model\Model;

class Artikel extends Model
{
    // Tentukan nama tabel (opsional, default mengambil nama kelas)
    protected $table = 'artikel';
    
    // Tambahkan method kustom untuk query spesifik
    public function getArtikelPopuler()
    {
        return $this->query("SELECT * FROM {$this->table} ORDER BY views DESC LIMIT 5");
    }
}

4. Menggunakan Model di Controller

Setelah model dibuat, Anda dapat menginisialisasinya di dalam Controller untuk mengambil data dan meneruskannya ke View.

app/Controllers/ArtikelController.php
<?php

namespace App\Controllers;

use Lamda\Core\Http\Controller;
use App\Models\Artikel;

class ArtikelController extends Controller
{
    public function index()
    {
        $artikelModel = new Artikel();
        
        // Mengambil semua data menggunakan method bawaan core Model
        $semuaArtikel = $artikelModel->findAll(); 

        return $this->render('artikel/index', [
            'data_artikel' => $semuaArtikel
        ]);
    }
}