Model adalah dokumentasi yang berkaitan dengan database, seperti DDL dan DML.

1. User Guide CodeIgniter Menjelaskan
Model adalah class php yang dirancang untuk bekerja dengan informasi dalam database Anda. Contoh, katakanlah Anda menggunakan CodeIgniter untuk mengelola sebuah blog. Anda mungkin memiliki class model yang berisi fungsi-fungsi untuk insert, update dan retrieve data blog. Berikut kami tunjukan seperti apa class model itu:
<?php
class Blog_model extends CI_Model {
public $title;
public $content;
public $date;
public function __construct()
{
// Call the CI_Model constructor
parent::__construct();
}
public function get_last_ten_entries()
{
$query = $this->db->get('entries', 10);
return $query->result();
}
public function insert_entry()
{
$this->title = $_POST['title']; // please read the below note
$this->content = $_POST['content'];
$this->date = time();
$this->db->insert('entries', $this);
}
public function update_entry()
{
$this->title = $_POST['title'];
$this->content = $_POST['content'];
$this->date = time();
$this->db->update('entries', $this, array('id' => $_POST['id']));
}
}
?>
2. Anatomi Model
Model beserta classnya disimpan pada direktori CodeIgniter >> application/models/. Mereka juga bisa dikelompokan kedalam subdirektori, jika Anda ingin meng-organisasikannya secara khusus.
Prototipe dasar untuk kelas model:
<?php
class Model_name extends CI_Model {
public function __construct()
{
parent::__construct();
}
}
?>
Yang mana Model_name adalah nama class Anda. Nama tersebut harus diawali dengan Huruf kapital dan sesuai dengan nama filenya. Baca aturan main selengkapnya di SINI.
Langkah - langkah Pengaturan (Setup)
- Inisialisasi database
- Setting Koneksi
- Membuat Class Model.
a. Inisialisasi Database
Ada 2 cara inisialisasi database:
1. Cara otomatis pada folder application/config/autoload.php. Modifikasi file autoload.php pada line 61.
<?php
/*
| -------------------------------------------------------------------
| Auto-load Libraries
| -------------------------------------------------------------------
| These are the classes located in system/libraries/ or your
| application/libraries/ directory, with the addition of the
| 'database' library, which is somewhat of a special case.
|
| Prototype:
|
| $autoload['libraries'] = array('database', 'email', 'session');
|
| You can also supply an alternative library name to be assigned
| in the controller:
|
| $autoload['libraries'] = array('user_agent' => 'ua');
*/
$autoload['libraries'] = array('database'); //array default masih kosong -> isi dengan 'database'
?>
2. Cara manual dengan memanggil load database pada tiap class yang membutuhkan.
$this->load->database();
b. Setting Koneksi
Setting koneksi terdapat pada applicaation/config/database.php
Dalam hal ini, saya asumsikan bahwa Anda telah mengimport database northwind terlebih dahulu.
<?php
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'northwind',
...
?>
c. Membuat Class Model
Dalam hal ini, studi kasus yang diberikan kepada kami adalah bagaimana cara menampilkan data Employees dan Shippers.
Menampilkan Data Employees
Silakan buat file php beserta classnya dengan nama Employee_model dan letakan di folder CodeIgniter applicaation/models/
<?php
class Employee_model extends CI_Model{
public function get_employee(){
return $this->db->get("employees"); //cara 1
/*
Ada 2 cara untuk manajemen database class:
cara 1, sebagaimana diatas.
cara 2, menjalankan query secara lengkap --> $this->db->query('SELECT * FROM employees');
Apabila ada klausa tambahan :
cara 1, masih tetap --> $this->db->get('categories');
cara 2, $this->db->like(' CategoryName',' Beverages');
*/
}
}
?>
Silakan buat file php beserta classnya dengan nama Employees dan letakan di folder CodeIgniter applicaation/controllers/
<?php
class Employees extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->model('Employee_model'); //cara 1.
/*
Ada 2 cara untuk memanggil model:
cara 1, diload disetiap class yang membutuhkannya. sebagaimana diatas.
cara 2, diload secara otomatis di application\config\autoload.php :
Pada line 135, Anda bisa menambahkan semacam ini:
$autoload['model'] = array('Employee_model');
jika sudah disebutkan disini, maka tidak perlu disebutkan lagi disetiap construct.
Tambahan:
$autoload['model'] = array('Employee_model'=>'em');
'Employee_model'=>'em' -> 'em' digunakan untuk menyingkat pemangilan model di class lain
*/
}
public function index(){
echo "<h1>Data Employees</h1>";
$query = $this->Employee_model->get_employee();
foreach($query->result() as $row):
echo $row->EmployeeID.'. '.$row->FirstName ." ".$row->LastName;
echo "<br />";
endforeach;
}
}
?>
Kemudian tampilkan dengan cara mengakses URI Segement yang diperlukan, silakan disesuaikan dengan localhost masing-masing. Kalau saya seperti ini:
http://localhost/CodeIgniter-3.1.0/index.php/Employees

Tampilan Employees Database Northwind
Menampilkan Data Shippers
Silakan buat file php beserta classnya dengan nama Shippers_model dan letakan di folder CodeIgniter applicaation/models/
<?php
class Shippers_model extends CI_Model{
public function get_shippers(){
return $this->db->get("shippers");
}
}
?>
Silakan buat file php beserta classnya dengan nama Shippers dan letakan di folder CodeIgniter applicaation/controllers/
<?php
class Shippers extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->model('Shippers_model');
}
public function index(){
echo "<h1>Data Employees</h1>";
$query = $this->Shippers_model->get_shippers();
foreach($query->result() as $row):
echo $row-> ShipperID.'. '.$row->CompanyName ." ".$row->Phone;
echo "<br />";
endforeach;
}
}
?>
Tampilkan. Sekarang URI Segment diganti ke Shippers:
http://localhost/CodeIgniter-3.1.0/index.php/Shippers

Tampilan Shippers Database Northwind
Beres. Selamat belajar!
Referensi
- User Guide CodeIgniter
- Modul Konsep Model Oleh Wahyu Widodo (Wahyusoft GitHub)