Difinisi Active Record Codeigniter



  1. Difinisi Active Record.

Kita mengetahui bahwa dalam framework Codeigniter memiliki library database untuk melakukan perintah dalam mengeksekusi query ke database salah satunya adalah Active Record. Disini akan membahas tentang  menggabungkan dan menggunakan Active Record ke dalam satu method atau fungsiActive Record adalah suatu pola yang memungkinkan mengambil informasi, memasukkan, dan memperbarui data dari database dengan pengkodean/scripting seminimal mungkin. Dalam beberapa kasus hanya satu atau dua baris kode yang diperlukan untuk melakukan perintah ke database.

  1. Perintah active record pada codeigniter

   Selecting Data : Adalah proses dalam pemilihan data dari database, atau sama dengan membentuk pernyataan SQL SELECT serta menjalankan querynya.
   Inserting Data : Akan menghasilkan string insert berdasarkan data yang diberikan, dan menjalankan querynya. di sini kita dapat menggunakan sebuah array atau obyek ke dalam fungsi.
   Updating Data : Akan menghasilkan string update berdasarkan data yang diberikan, dan menjalankan querynya.
   Deleting Data : membentuk sebuah string delete, dan menjalankan querynya.
   Method Chaining : Metode chaining memungkinkan kita untuk menyederhanakan sintaks dengan menghubungkan beberapa fungsi sekaligus. Contohnya $this->db->select(‘title’)->from(‘mytable’)->where(‘id’, $id)->limit(10, 20);
   Active Record Caching : Digunakan untuk melakukan “chace” pada query kita dan bisa digunakan untuk proses berikutnya.

  1. Mempersiapkan Model Active Record

Dalam tutorial ini untuk nama model adalah Default_model, sehingga nanti file PHP untuk modelnya adalah default_model.php, Nah berikut salinan baris kode untuk model tersebut:
            <?php
            class Default_model extends CI_Model {
            public function __construct()
            {
                        parent::__construct();
            }
            function getDataDB($tabel,$field = '*', $cond = array(),$join = array(),$limit = array())
            {
                        $this->db->select($field);
                        $this->db->from($tabel);
                        if(count($join) > 0) {
                                    foreach ($join as $key => $val){
                                                $this->db->join($key,$val,'left');
                                    }
                        }
                        if(count($cond) > 0) $this->db->where($cond);
                        if(count($limit) == 1) $this->db->limit($limit[0]);
                        if(count($limit) == 2) $this->db->limit($limit[0],$limit[1]);
                        return $this->db->get();
            }
            function getDataDB2($tabel,$config = array())
            {
                        $data = array(
                                                'field' => '*',
                                                'join' => array(),
                                                'like' => array(),
                                                'where' => array(),
                                                'order' => array(),
                                                'limit' => array()
                                    );
                        foreach ($config as $key => $val){
                                    $data[$key] = $val;
                        }
                        $this->db->select($data['field']);
                        $this->db->from($tabel);
                        if(count($data['join']) > 0) {
                                    foreach ($data['join'] as $key => $val){
                                                $this->db->join($key,$val,'left');
                                    }
                        }
                        if(count($data['where']) > 0) $this->db->where($data['where']);
                        if(count($data['like']) > 0){
                                    foreach ($data['like'] as $key => $val){
                                                if(is_array($val)) $this->db->like($key,$val[0],$val[1]);
                                                else $this->db->like($key,$val);
                                    }
                        }
                        if(count($data['order']) > 0) {
                                    foreach ($data['order'] as $key => $val){
                                                $this->db->order_by($key,$val);
                                    }
                        }
                        if(count($data['limit']) == 1) $this->db->limit($data['limit'][0]);
                        if(count($data['limit']) == 2) $this->db->limit($data['limit'][0],$data['limit'][1]);
                        return $this->db->get();
            }
            }
            Seperti yang Anda lihat pada file default_model.php di atas terdapat dua buah fungsi yaitu          getDataDB, dan getDataDB2. Kedua fungsi tersebut masih saya gunakan hingga sekarang dan fungsi getDataDB2 merupakan pengembangan dari fungsi getDataDB.

  1. Mempersiapkan file Controller Codeigniter

Sekarang siapkan file Controllernya, di sini saya beri nama Idhamcontroller, sehingga file PHP-nya menjadi idhamcontroller.php. Berikut source codenya :

            <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
            class Idhamcontroller extends CI_Controller {
                                    function __construct()
                                    {
                                    parent::__construct();
                                    $this->load->model('default_model');
                                    }
            public function index()
             {
        $data['title'] = 'Menggabungkan dan Menggunakan Active Record Codeigniter ke dalam satu method atau fungsi';
            $data['user'] = $this->default_model->getDataDB('tabel1','*',array('id_tabel1 > '=>1,'id_tabel1 < '=>5));
                        $config1['where'] = array('id_tabel1'=>2);
                        $data['user2'] = $this->default_model->getDataDB2('tabel1',$config1);
                        $this->load->view('contoh',$data);
              }
            }

  1. Mempersiapkan file view dan databasenya

File view-nya saya beri nama contoh.php nah berikut source code-nya :
<!DOCTYPE html>
<html lang="en">
<head>
                <meta charset="utf-8">
                <title><?= $title; ?></title>
                <style type="text/css">
                ::selection{ background-color: #939191; color: white; }
                ::moz-selection{ background-color: #E13300; color: white; }
                ::webkit-selection{ background-color: #E13300; color: white; }
                body {background-color: #fff;           margin: 40px;font: 13px/20px normal Helvetica, Arial, sans-serif;color: #4F5155;}
                a {            color: #003399;   background-color: transparent;font-weight: normal;}
                h1 {color: #444;background-color: transparent;border-bottom: 1px solid #D0D0D0;font-size: 19px;font-weight: normal;margin: 0 0 14px 0;                padding: 14px 15px 10px 15px;}
                code {     font-family: Consolas, Monaco, Courier New, Courier, monospace;           font-size: 12px;     background-color: #f9f9f9;  border: 1px solid #D0D0D0;              color: #002166;   display: block;       margin: 14px 0 14px 0;       padding: 12px 10px 12px 10px;}
                #body{   margin: 0 15px 0 15px;}
                p.footer{                text-align: right;    font-size: 11px;     border-top: 1px solid #D0D0D0;       line-height: 32px; padding: 0 10px 0 10px;         margin: 20px 0 0 0;}
                #container{           margin: 10px;       border: 1px solid #D0D0D0;              -webkit-box-shadow: 0 0 8px #D0D0D0;}
                </style>
</head>
<body>
<div id="container">
                <h1><?= $title; ?>!</h1>

                <div id="body">
                                <p>
                                                Hasil 1, dengan perintah Select dan where menggunakan fungsi getDataDB :<br/>
                                                <?php
                                                if($user->num_rows > 0){
                                                                $hasil1 = '';
                                                                foreach($user->result() as $row){
                                                                                $hasil1 .= 'id_tabel1 : '.$row->id_tabel1.' | nama : '.$row->nama.'<br/>';
                                                                }
                                                                echo rtrim($hasil1,'<br/>');
                                                } else echo 'data kosong';
                                                ?>
                                </p>
                                <p>
                                                Hasil 2, dengan perintah Select dan where menggunakan fungsi getDataDB2 :<br/>
                                                <?php
                                                if($user2->num_rows > 0){
                                                                $hasil2 = '';
                                                                foreach($user2->result() as $row){
                                                                                $hasil2 .= 'id_tabel1 : '.$row->id_tabel1.' | nama : '.$row->nama.'<br/>';
                                                                }
                                                                echo rtrim($hasil2,'<br/>');
                                                } else echo 'data kosong';
                                                ?>
                                </p>
                </div>
                <p class="footer">Page rendered in <strong>{elapsed_time}</strong> seconds</p>
</div>
</body>
</html>
Di bawah ini adalah database yang akan kita gunakan :

CREATE DATABASE `aktivrecord` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `aktivrecord`;
CREATE TABLE IF NOT EXISTS `tabel1` (
  `id_tabel1` int(11) NOT NULL AUTO_INCREMENT,
  `nama` varchar(20) NOT NULL,
  PRIMARY KEY (`id_tabel1`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
INSERT INTO `tabel1` (`id_tabel1`, `nama`) VALUES
(1, 'Baidu'),
(2, 'Google'),
(3, 'Alexa'),
(4, 'Idham'),
(5, 'Pembaca sekalian');

CREATE TABLE IF NOT EXISTS `tabel2` (
  `id_tabel2` int(11) NOT NULL AUTO_INCREMENT,
  `id_tabel1` int(11) NOT NULL,
  `tempat_lahir` varchar(20) NOT NULL,
  PRIMARY KEY (`id_tabel2`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
INSERT INTO `tabel2` (`id_tabel2`, `id_tabel1`, `tempat_lahir`) VALUES
(1, 1, 'China'),
(2, 2, 'AS'),
(3, 3, 'AS Mungkin'),
(4, 4, 'Sekadau'),
(5, 5, 'Dimana mana');
Sebelum menjalankan programnya silahkan setting file autoload.php di folder “./application/config/autoload.php”, tujuannya adalah kita ingin meload library database secara otomatis seperti gambar di bawah ini:



Jangan lupa juga mensetting file database.php Anda dan sesuaikan dengan pengaturan user di databaseAnda, sebagai contoh saya sertakan pula gambarnya di bawah ini:

  1. Pebjelasan penggunaan kode program active record

Penjelasan penggunaan di sini adalah cara menggunakan model Active Record Codeigniter yang telah kita buat tadi (file default_model.php) yang terletak pada file idhamcontroller.php yang juga sudah saya berikan source codenya di atas.
Yang pertama saya mau menjelaskan cara penggunaan default_model dengan nama fungsi getDataDB dahulu.

            $data['user'] = $this->default_model->getDataDB('tabel1','*',array('id_tabel1 >      '=>1,'id_tabel1 < '=>5));
Kode di atas merupakan contoh perintah Select dan where menggunakan fungsi getDataDB sehingga pernyataan SQL-nya menjadi “SELECT * FROM tabel1 WHERE id_tabel1 > 1 AND id_tabel1 < 5". Tanda bintang(*) menunjukan pengambilan semua field, jika hanya field tertentu silahkan tulis nama fieldnya dipisah oleh tanda koma misalnya “id_tabel1,nama” dan seterusnya. Selain itu Anda juga bisa menggunakan perintah join pada fungsi getDataDB ini misalnya sebagai berikut :
$data['user'] = $this->default_model->getDataDB('tabel1','tabel1.nama, tabel2.tempat_lahir',array(),array('tabel2'=>'tabel2.id_tabel1 = tabel1.id_tabel1'));
Perintah di atas akan menghasilkan SQL “SELECT tabel1.nama, tabel2.tempat_lahir FROM (tabel1) LEFT JOIN tabel2 ON tabel2.id_tabel1 = tabel1.id_tabel1″ tanpa mengikuti pernyataan where sehingga tempat untuk statement where-nya cukup kita buat menjadi array().
Selanjutnya adalah pembahasan Active Record Codeigniter di default_model dengan nama fungsi getDataDB2.
$config1['where'] = array('id_tabel1'=>2);
$data['user2'] = $this->default_model->getDataDB2('tabel1',$config1);
Saya lebih suka menggunakan getDataDB2 pada fungsi di default_model yang sudah kita buat tadi, karena memang fungsi ini merupakan pengembangan dari fungsi getDataDB. Dan penggunaannya jauh lebih mudah tinggal Anda buat config-nya saja. Pada perintah di atas akan menghasilkan SQL “SELECT * FROM tabel1 WHERE id_tabel1 = 2″. Nah berikut saya buatkan beberapa contoh lain untuk Anda supaya lebih jelas cara penggunaan Active Record yang sudah dijadikan satu dalam fungsi getDataDB2.
Penggunaan Where :
$config1['where'] = array('id_tabel1 >'=>1,'id_tabel1 <'=>5);  # WHERE id_tabel1 > 1 AND id_tabel1 < 5
$data['user2'] = $this->default_model->getDataDB2('tabel1',$config1);
Penggunaan Field :
$config1['where'] = array('id_tabel1'=>2); # WHERE id_tabel1 = 2
$config1['field'] = array('nama'); # field yang akan diambil `nama`. Pisahkan dengan koma jika ada yang lain misal `id_tabel1,nama`.
$data['user2'] = $this->default_model->getDataDB2('tabel1',$config1);
Tanpa config, artinya mengambil semua data di tabel1 :
$data['user2'] = $this->default_model->getDataDB2('tabel1');
Penggunaan Join :
$config1['where'] = array('id_tabel1'=>2); # WHERE id_tabel1 = 2
$config1['field'] = array('nama'); # field yang akan diambil `nama`. Pisahkan dengan koma jika ada yang lain misal `id_tabel1,nama`.
$config1['join'] = array('tabel2'=>'tabel2.id_tabel1 = tabel1.id_tabel1'); # Penggunaan join
$data['user2'] = $this->default_model->getDataDB2('tabel1',$config1);
Penggunaan Like :
$config1['like'] = array('nama'=>'i');
# $config1['like'] = array('nama'=>array('i','before')); # Contoh lain bearti WHERE nama LIKE '%i'
# $config1['like'] = array('nama'=>array('i','after')); # Contoh lain bearti WHERE nama LIKE 'i%'
# $config1['like'] = array('nama'=>array('i','before')); # Contoh lain bearti WHERE nama LIKE '%i%'
$data['user2'] = $this->default_model->getDataDB2('tabel1',$config1);
 
Sumber: http://catatanbelajar.com/2012/03/menggabungkan-dan-menggunakan-active-record-codeigniter-ke-dalam-satu-method-atau-fungsi/
 
 
 
 
SEKIAN DAN TERIMA KASIH

No comments:

Post a Comment