Lewati ke konten utama

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

MethodFungsi
$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.