Model di CodeIgniter
Model adalah bagian dari arsitektur MVC yang bertanggung jawab untuk berinteraksi dengan database. Di CodeIgniter 4, model dapat dibuat secara manual atau menggunakan fitur bawaan CodeIgniter\Model
untuk CRUD otomatis.
1. Lokasi Model
Semua file model disimpan di dalam folder: app/Models/
2. Membuat Model Sederhana
<?php
namespace App\Models;
use CodeIgniter\Model;
class ProdukModel extends Model
{
protected $table = 'produk';
protected $primaryKey = 'id';
protected $allowedFields = ['nama', 'harga', 'stok'];
}
Penjelasan:
-
$table
: nama tabel di database -
$primaryKey
: nama kolom primary key -
$allowedFields
: kolom yang boleh diisi secara massal (insert/update)
3. Menggunakan Model di Controller
use App\Models\ProdukModel;
class Produk extends BaseController
{
public function index()
{
$model = new ProdukModel();
$data['produk'] = $model->findAll();
return view('produk/index', $data);
}
}
4. Operasi CRUD Dasar
Method | Fungsi |
---|---|
$model->findAll() | Ambil semua data |
$model->find($id) | Ambil data berdasarkan ID |
$model->insert($data) | Tambah data baru |
$model->update($id, $data) | Update data berdasarkan ID |
$model->delete($id) | Hapus data berdasarkan ID |
Contoh Insert:
$data = [
'nama' => 'Laptop',
'harga' => 8000000,
'stok' => 5
];
$model->insert($data);
5. Query Builder di Model
Model juga bisa menggunakan query builder:
$produk = $model->where('stok >', 0)->orderBy('nama')->findAll();
Atau dengan chaining:
$model->like('nama', 'Laptop')->findAll();
6. Validasi Otomatis di Model
Model bisa melakukan validasi otomatis jika diatur:
protected $validationRules = [
'nama' => 'required|min_length[3]',
'harga' => 'required|numeric',
];
protected $validationMessages = [
'nama' => [
'required' => 'Nama produk wajib diisi.',
'min_length' => 'Nama minimal 3 karakter.'
],
'harga' => [
'numeric' => 'Harga harus berupa angka.'
]
];
Validasi akan berjalan saat insert()
atau update()
dipanggil.
7. Menggunakan Timestamps Otomatis
Aktifkan fitur created_at dan updated_at:
protected $useTimestamps = true;
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
Pastikan kolom created_at
dan updated_at
ada di tabel.
8. Custom Method dalam Model
Kamu bisa menambahkan fungsi sendiri:
public function produkAktif()
{
return $this->where('aktif', 1)->findAll();
}
Model di CodeIgniter membuat interaksi dengan database menjadi lebih sederhana dan aman, dengan fitur bawaan seperti validasi, query builder, dan pengaturan field yang diperbolehkan.