Model

Model merupakan sebuah kelas yang berisi kode untuk berkomunikasi antara PHP dengan Database. Dari kelas ini dapat digunakan untuk mengambil data, menghapus data, dan merubah data terhadap tabel tertentu yang ada didalam database. Denga dipisahnya antara kode logika dengan logika khusus pada database, diharapkan proses pengkodean dapat rapih. Kelas ini hanya dapat dipanggil dari kelas Controller. Kelas model ini secara default berada ada didalam direktori app/model.

<?php
class Blog_Model extends SENE_Model{
	var $tbl = 'blog';
	var $tbl_as = 'b';
	public function __construct(){
		parent::__construct();
		$this->db->from($this->tbl,$this->tbl_as);
	}
}

Kompisisi Kode Kelas Model

Kelas model biasanya memiliki nama kelas yang sama dengan nama tabel yang akan dibuat modelnya untuk menghindari nama yang ambigu. Contoh kelas model untuk tabel b_user, maka nama kelas modelnya B_User_Model, sementara untuk nama filenya b_user_model.php yang disimpan didalam direktori app/model/.

Standar Penamaan

Seme Framework sebetulnya tidak membutuhkan nama khusus untuk pembuatan model, namun kami menyarankan penamaan model sama dengan nama tabel yang akan dibuatkan modelnya yang diikuti dengan akhiran _model. Kemudian untuk membuat aplikasi yang cukup besar, model juga bisa dipishkan berdasarkan sudut pandang aplikasi, contoh app/model/api/, app/model/front/ dan sebagainya.

app/model/
-front/
--user_model.php
--blog_model.php
-admin/
--user_model.php
--blog_model.php

Menggunakan Query Builder

Kelas model di Seme Framework telah memiliki query builder atau penyusun query dengan kode PHP sehingga tidak perlu menghafal struktur SQL untuk mengambil data atau menghapus, atau mengedit data ke database. Dengan adanya query builder ini diharapkan dapat mempercepat dan mempermudah proses pembuatan kelas model di Seme Framework.

<?php
class Blog_Model extends SENE_Model{
	var $tbl = 'blog';
	var $tbl_as = 'b';
	public function __construct(){
		parent::__construct();
	}
	public function getAll(){
		$this->db->from($this->tbl,$this->tbl_as);
		return $this->db->get();
	}
	public function countAll(){
		$this->db->select_as('COUNT(*)','total',0);
		$this->db->from($this->tbl,$this->tbl_as);
		$d = $this->db->get_first();
		if(isset($d->total)) return $d->total;
		return 0;
	}
	public function getById($id){
		$this->db->where('id',$id);
		$this->db->from($this->tbl,$this->tbl_as);
		return $this->db->get_first();
	}
	public function set($di=array()){
		$this->db->insert($this->tbl,$di);
		return $this->db->last_id;
	}
	public function update($id,$du=array()){
		$this->db->where('id',$id);
		return $this->db->update($this->tbl,$du);
	}
	public function del($id){
		$this->db->where("id",$id);
		return $this->db->delete($this->tbl);
	}
}

Debug Query

Seme Framework memiliki fitur atau penanda (flag) untuk melakukan debug terhadap query yang dilakukan. Cukup menambahkan penanda 1 pada akhir parameter dari setiap metode yang digunakan.

  • $this->db->get('object',1)
  • $this->db->get_first('object',1)
  • $this->db->insert($this->tbl,$di,0,1)
  • $this->db->update($this->tbl,1);
  • $this->db->delete($this->tbl,1);