Hindari Pengulangan Query dengan bantuan MY_Model
Codeigniter memungkinkan anda melakukannya dengan membuat "MY_Model" di dalam folder core aplikasi anda.
owin
---
Sering kali saya menemukan diri saya melakukan queries yang sama berulang-ulang untuk setiap tabel yang digunakan oleh aplikasi. Inilah sebabnya saya harus membuat model "universal" untuk menghindari pengulangan. Codeigniter memungkinkan anda melakukannya dengan membuat "MY_Model" di dalam folder core aplikasi anda.
Methodsnya adalah sebagai berikut:
get_all()
public function get_all($where_arr = NULL, $order_by_var_arr = NULL, $select = NULL)Semua argumen method ini bersifat opsional. tetapi, jika anda perlu memiliki array dengan ketentuan yang harus dipenuhi oleh records, anda dapat menggunakan array $where_arr(). Juga, jika Anda perlu order dengan kolom tertentu, Anda dapat menggunakan string dengan nama kolom atau array yang memiliki elemen: "nama kolom" dan "jenis ordering". Anda juga dapat memilih untuk hanya kolom tertentu dengan menghitungnya dalam sebuah string.
method ini akan mengembalikan objek sebagai hasilnya.
get()
get($where_arr = NULL)Method ini akan mengembalikan satu baris result, dengan kondisi yang harus dipenuhi.
insert()
insert($columns_arr)Method ini menerima parameter array dengan kolom dan nilai yang ingin anda masukan.
update()
update($columns_arr, $where_arr)Method ini digunakan untuk memperbaharui data dengan menerima 2 paramater dan hasil yang dikembalikan berbentuk integer.
delete()
delete($where_arr)Method ini akan menghapus baris berdasarkan data di dalam array $where_arr.
Apa yang harus dilakuakan dengan MY_Model
Anda harus menyimpan file MY_Model.php di dalam folder application/core.Setelah Anda menyimpannya, Anda dapat memanggilnya dari dalam model apa pun yang Anda buat dengan memperluas model sebagai berikut:
Any_model.php
class Any_model extends MY_Model
{
public function __construct()
{
parent::__construct();
$this->table ='your_table';
}
//... other methods that you want to use
}
Seperti yang Anda lihat, Anda harus memperluas MY_Model dan di konstruktor, Anda harus memberi nama tabel utama model Anda.
Sekarang Anda cukup menggunakan metode pada model apa pun yang memperluas kelas MY_Model.
Sekarang, izinkan saya menunjukkan MY_Model saya:
MY_Model.php
class MY_Model extends CI_Model
{
protected $table;
public $where_arr = NULL;
function __construct()
{
parent::__construct();
}
// --------------------------------------------------------------------
/** retrieve all records from DB
*
* @param array $where_arr
* @param var|array $order_by_var_arr
* @param var $select
* @return object
*/
public function get_all($where_arr = NULL, $order_by_var_arr = NULL, $select = NULL)
{
if(isset($where_arr))
{
$this->db->where($where_arr);
}
if(isset($order_by_var_arr))
{
if(!is_array($order_by_var_arr))
{
$order_by[0] = $order_by_var_arr;
$order_by[1] = 'asc';
}
else
{
$order_by[0] = $order_by_var_arr[0];
$order_by[1] = $order_by_var_arr[1];
}
$this->db->order_by($order_by[0],$order_by[1]);
}
if(isset($select))
{
$this->db->select($select);
}
$query = $this->db->get($this->table);
echo $this->db->last_query();
if($query->num_rows()>0)
{
foreach($query->result() as $row)
{
$data[] = $row;
}
return $data;
}
else
{
return FALSE;
}
}
// --------------------------------------------------------------------
/**
* Retrieve one record from DB
* @param type $where_arr
* @return object
*/
public function get($where_arr = NULL)
{
if(isset($where_arr))
{
$this->db->where($where_arr);
$this->db->limit(1);
$query = $this->db->get($this->table);
if($query->num_rows() > 0)
{
return $query->row();
}
else
{
return FALSE;
}
}
else
{
return FALSE;
}
}
// --------------------------------------------------------------------
/**
* Insert a record into DB
* @param type $columns_arr
* @return int insert id
*/
public function insert($columns_arr)
{
if(is_array($columns_arr))
{
if($this->db->insert($this->table,$columns_arr))
{
return $this->db->insert_id();
}
else
{
return FALSE;
}
}
}
// --------------------------------------------------------------------
/**
* Update record(s)
* @param type $columns_arr
* @param type $where_arr
* @return int affected rows
*/
public function update($columns_arr, $where_arr = NULL)
{
if(isset($where_arr))
{
$this->db->where($where_arr);
$this->db->update($this->table, $columns_arr);
if($this->db->affected_rows()>0)
{
return $this->db->affected_rows();
}
}
else
{
return FALSE;
}
}
// --------------------------------------------------------------------
/**
* Delete row(s)
* @param type $where_arr
* @return int affected rows
*/
public function delete($where_arr = NULL)
{
if(isset($where_arr))
{
$this->db->where($where_arr);
$this->db->delete($this->table);
return $this->db->affected_rows();
}
else
{
return FALSE;
}
}
}