Migration Pada CodeIgniter




Menggunakan Fitur Migrations (Migrasi) pada CodeIgniter


            Salah satu fitur baru yang dikenalkan pada CodeIgniter 2.1.0 adalah Migrations (Bahasa Indonesia : Migrasi). Fitur ini masuk dalam kategori librari, namum perlakuannya sedikit berbeda dengan librari pada umumnya. Fungsi utamanya untuk manajemen data atau tabel yang ada pada basisdata. Beberapa metode di dalamnya akan dipanggil dan dijalankan dalam kasus-kasus tertentu berdasarkan versi yang didefinisikan.
Librari ini sebenarnya sudah ada sebelum rilis CodeIgniter versi terbaru. Aslinya dibuat oleh Phil Sturgeon. Dia juga pernah menjelaskan fungsi dan cara penggunaan librari tersebut. Namun, entah kenapa saya belum ada niatan untuk mencobanya pada waktu itu. Disamping karena tidak paham betul fungsinya, tidak ada kasus juga yang membuat saya membutuhkan librari tersebut. Sturgeon mungkin pernah mengajukan proposal agar dimasukkan kedalam CodeIgniter, dan bagusnya proposal tersebut diterima oleh tim pengembang yang lain. Karena sekarang merupakan bagian dari CodeIgniter, fitur ini layak untuk kita coba. Barangkali suatu saat akan berguna sekali
Kita ambil contoh begini. Dalam aplikasi yang kita buat sebelumnya, terdapat sebuah tabel user dengan beberapa kolom, namun pada tabel tersebut tidak tercantum kolom dengan nama “real_name” misalnya, yang mana kolom ini menyimpan nama asli user. Pada paket aplikasi berikutnya yang kita buat, dalam skrip tersebut terdapat beberapa langkah yang membutuhkan kolom real_name untuk dapat diproses pada PHP. Dan, orang/klien yang menggunakan aplikasi kita sebelumnya diwajibkan untuk memperbaharui aplikasinya. Lantas, bagaimana memperbaharui tabel user pada basisdata? Apakah klien kita harus mengubahnya secara manual? Atau kita langsung yang mengubahnya secara manual? Bagaimana kalau klien yang ingin memperbaharuinya tidak sedikit? Nah, inilah saat tepat dimana migrasi dipekerjakan.
Secara kasar, fungsi migrasi yang kita buat nantinya akan menentukan penambahan kolom real_name. Tergantung dari versi yang digunakan klien tersebut, jika versi migrasinya lebih tinggi, maka akan melakukan upgrade, kalau versinya lebih rendah maka akan melakukan hal sebaliknya.
Mulai dari bagian ini, saya akan membahas sisi teknis migrasi dengan membeberkan beberapa contoh skrip beserta penjelasannya. Hal pertama yang terpenting dalam migrasi adalah berkas config yang disediakan, terletak pada direktori application/config dengan nama migration. Ada tiga item config yang harus kalian pahami.
$config['migration_enabled'] = FALSE;
Nilai bawaan adalah FALSE. Ubah nilainya menjadi TRUE, untuk mengaktifkan migrasi.
1
$config['migration_version'] = 00;
Menjelaskan versi migrasi saat ini yang digunakan. Karena merupakan pertama kalinya menggunakan versi migrasi, kita bisa mengisi nilainya menjadi 1.
1
$config['migration_path'] = APPPATH . 'migrations/';
Menentukan letak bawaan berkas migrasi yang kita buat. Jika ingin tetap menggunakan nilai bawaan, kalian harus membuat direktori dengan nama migrations dalam direktori application. Berikut ini contoh skrip yang merupakan inti dari migrasi berupa penambahan kolom real_name untuk versi 1.
defined('BASEPATH') or exit('No direct script access.');
 
/**
 * @author Yugo
 */
class Migration_Add_real_name_column extends CI_Migration {
 
    /**
     * Upgrade
     */
    public function up() {
        // dengan dbforge
        $this->dbforge->add_column('user', array(
            'real_name' => array(
                'type' => 'varchar',
                'constraint' => 30,
                'null' => false,
                'default' => ''
            )
        ));
 
        // atau bisa juga dengan query
        $query = 'ALTER TABLE  `user` ADD  `real_name` VARCHAR( 30 ) NOT NULL';
        $this->db->query($query);
    }
 
    /**
     * Downgrade
     */
    public function down() {
        // dengan dbforge
        $this->dbforge->drop_column('user', 'real_name');
 
        // atau dengan query
        $query = 'ALTER TABLE  `user` DROP  `real_name`';
        $this->db->query($query);
    }
 
}
 
/* APPPATH/migrations/001_Add_real_name_column.php */

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS
Read Comments

1 komentar:

Asrul H mengatakan...

bagaimana mengeksekusinya bg?

Posting Komentar