Cara Membuat Model CRUD Efisien dan Efektif di Codeigniter - Model dalam codeigniter adalah sebuah class khusus yang kita buat untuk melakukan operasi yang berhubungan dengan database atau biasa disebut dengan CRUD ( Create , Read , Update , Delete ). Dengan menggunakan active record class yang sudah ada dalam library codeigniter kita dapat dengan mudah melakukan query pada databse kita.
Akan tetapi masih banyak orang dalam membuat model untuk melakukan operasi CRUD membuat fungsi untuk melakukan CRUD pada setiap tabel yang ada dalam database menggunakan satu model setiap tabelnya, sebgai contoh : apa bila di dalam database terdapat dua buah tabel yaitu tbl_mahasiswa dan tbl_kelas orang seringkali membuat dua buah model yaitu model_mahasiswa dan model_kelas atau membuat satu model akan tetapi memisahkan fungsinya. dengan kata lain membuat fungsi untuk CRUD masing - masing model.
Hal ini menurut saya agak tidak efisien dikarenakan memperlambat proses pembuatan sebuah aplikasi karena setiap kali kita ingin melakukan sebuah operasi CRUD terhadap suatu tabel dalam datbase kita lagi - lagi harus membuat sebuah fungsi baru atau membuat sebuah model baru. padahal di dalam codeigniter kita bisa melakukan passing variabel ke model yang kita buat.
Lalu bagaimanakah Cara Membuat Model CRUD Efisien dan Efektif Codeigniter ?
Untuk melakukan sebuah operasi CRUD sederhana terhadap sebuah tabel kita hanya perlu membutuhkan satu buah model. hal ini berlaku juga untuk banyak tabel kita hanya perlu membuat sebuah model.
Untuk melakukan sebuah operasi CRUD sederhana terhadap sebuah tabel kita hanya perlu membutuhkan satu buah model. hal ini berlaku juga untuk banyak tabel kita hanya perlu membuat sebuah model.
Dari pada banyak cingcong manjang - manjangin artikel langsung aja kita meluncur ke contohnya sambil kita jelaskan cara kerja serta penggunaanya :
Untuk menulisakan script anda dapat menggunakan apa saja bebas, contoh :
Notepad, Notepad++, Dreamwaver, NetBeans, Eclipse.
Model
<?php /** * Description of global_models * * @author JIN TOPLES */ class global_model extends CI_Model { function get_data($select, $table, $where){ $query = 'SELECT '.$select.' FROM '.$table.' '.$where; return $this->db->query($query); } function save_data($data, $table){ $return = FALSE; if ($this->db->insert($table, $data)){ $return = TRUE; } return $return; } function update_data($id, $field, $data, $table){ $return = FALSE; $this->db->where($field, $id); if ($this->db->update($table, $data)){ $return = TRUE; } return $return; } function delete_data($id, $field, $table){ $return = FALSE; $this->db->where($field, $id); if ($this->db->delete($table)){ $return = TRUE; } return $return; } } ?>
Perhatikan baik - baik model di atas model tersebut hanya terdiri dari empat buah fungsi yaitu : Get_data , Save_data , Update_data , Delete_data
Get_data : Fungsi ini digunakan untuk memanggil data atau mengambil list data dari tabel, fungsi ini juga dapat anda gunakan untuk pencarian data.
Save_data : Fungsi ini digunakan untuk menyimpan data
Update_data : Fungsi ini digunakan untuk mengupdate data
Delete_data : Fungsi ini digunakan untuk menghapus data
Tetapi kenapa disana tidak terdapat nama tabel, field dan rules dari querynya ? hal ini dikarenakan kita melemparkan atau passing nama tabel, field dan rules dari querynya melalui controller langsung. Hah ? maksudnya ? Bagai mana cara menggunakannya ?
Untuk penggunaan sekarang kita langsung saja membuat sebuah controller, sebagai contoh kita akan melakukan sebuah operasi CRUD terhadap sebuah tabel yaitu tbl_mahasiswa
Untuk penggunaan sekarang kita langsung saja membuat sebuah controller, sebagai contoh kita akan melakukan sebuah operasi CRUD terhadap sebuah tabel yaitu tbl_mahasiswa
Controller
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class main extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('global_model'); } function list_mahasiswa(){ //Parameter pertama adalah field yang ingin di ambil contoh : * atau id_mahasiswa, npm //Parameter kedua adalah nama tabel //Parameter ketiga adalah rulesnya contoh : WHERE id_mahasiswa=0 $this->global_model->get_data('*', 'tbl_mahasiswa', 'ORDER BY NPM ASC')->result(); } function save_mahasiswa(){ $data['nama_mahasiswa'] = 'Jin Toples'; $data['NPM'] = '201110225xxx'; //Parameter pertama adalah data yang ingin di simpan //Parameter kedua adalah nama tabel $this->global_model->save_data($data, 'tbl_mahasiswa'); } function delete_mahasiswa($id){ //Parameter pertama adalah id atau index yang ingin di cocokan dengan field //Parameter kedua adalah nama field yang di cocokan dengan id //Parameter ketiga adalah nama tabel $this->global_model->delete_data($id, 'id_mahasiswa', 'tbl_mahasiswa'); } function edit_mahasiswa($id){ //Parameter pertama adalah field yang ingin di ambil //Parameter kedua adalah nama tabel //Parameter ketiga adalah rulesnya contoh : WHERE id_mahasiswa=$id $this->global_model->get_data('*', 'tbl_mahasiswa', 'WHERE id_mahasiswa="'.$id.'"')->result(); } function update_mahasiswa($id){ $data['nama_mahasiswa'] = 'Jin Baru'; $data['NPM'] = '201110225xyz'; //Parameter pertama adalah id atau index yang ingin di cocokan dengan field //Parameter kedua adalah nama field yang di cocokan dengan id //Parameter ketiga adalah nama data yang akan di update //Parameter keempat adalah nama tabel $this->global_model->update_data($id, 'id_mahasiswa', $data, 'tbl_mahasiswa'); } }
?>
*Notes
- Perhatikan pada bagian fungsi save_mahasiswa dan update_mahasiswa setiap data array yang di lempar index arraynya harus sama dengan field yang ada dalam tabel tersebut seperti contoh di atas $data['npm'] hal ini berarti data tersebut akan di simpan dalam field npm yang ada dalam tabel.
Dari pada anda binggung dengan penjelasan saya lebih baik coba saja langsung gunakan model di atas dan gunakan pada controller yang ada punya anda hanya perlu mencokan nama tabel, field dan rules dari query yang anda gunakan. dan rasakan kemudahannya. Untuk keamanannya silahkan di nilai masing - masing mungkin para mastah lebih mengerti. mungkin bisa di modifikasi masing - masing untuk meningkatkan keamanannya.
thank gan
ReplyDeletekeyennn
ReplyDeleteMantap ini. Makasih pak
ReplyDelete