Yii Framework Menggunakan fungsi Migration

alfa6661
- October 09, 2013
0 (0 votes)
Rate :
Cara menggunakan fungsi migration pada Yii Framework

Struktur database selalu berkembang seiring kita mengembangkan dan merawat aplikasi database-driven. Misalnya, ketika saat pengembangan, kita ingin menambah sebuah tabel baru, atau setelah aplikasi sudah rampung, kita mungkin menyadari perlu menambah sebuah indeks pada sebuah kolom. Sangatlah penting untuk selalu menjaga track dari perubahan struktural database ini yang disebut dengan migration (migrasi). Jika source code dan database tidak tersinkronisasi, besar peluangnya keseluruhan aplikasi akan rusak. Karena itulah, Yii menyediakan fungsi migrasi database yang bisa menjaga histori migrasi database, mengaplikasikan migrasi baru ataupun mengembalikannya.

Migration adalah fitur dari Active Record yang memungkinkan Anda untuk mengembangkan skema database Anda dari waktu ke waktu. Daripada menulis modifikasi skema di SQL murni, migration memungkinkan Anda untuk menggunakan fungsi ini untuk menggambarkan perubahan pada tabel Anda.

Yii mendukung migrasi database melalui perintah yiic migrate. Tool ini mendukung pembuatan migrasi baru, mengaplikasikan/mengubah/mengulangi migrasi, dan menampilkan histori migrasi dan migrasi baru.

Pembutan Migrasi

Pertama buka terminal, kemudian masuk ke folder project_anda/protected. Pastikan Anda memiliki direktori protected/migrations dan writable(memiliki hak akses untuk tulis). Cek juga koneksi database di protected/config/console.php

Untuk membuat sebuah migrasi baru, kita jalankan perintah ini:

yiic migrate create <name>

Parameter wajib name digunakan sebagai deskripsi yang sangat singkat tentang migrasi (misalnya create_users_table). Seperti yang akan ditunjukkan berikut ini, parameter name digunakan sebagai bagian dari nama kelas PHP. Oleh karena itu, seharusnya hanya mengandung huruf, angka atau garis bawah

Contoh :

class m140201_095836_create_users_table extends CDbMigration
{
 
    public function up()
    {
        $this->createTable('users', array(
            'id' => 'pk',
            'username' => 'VARCHAR(32) NOT NULL',
            'password' => 'VARCHAR(32) NOT NULL',
        ), 'ENGINE=InnoDB');
    }
 
    public function down()
    {
        $this->dropTable('users');
    }
 
}

Migrasi ini menambahkan tabel yang disebut users dengan kolom id dengan tipe data integer primary key, username dan password dengan tipe data varchar. Migrasi disimpan sebagai file dalam protected/migrations direktori, satu untuk masing-masing kelas migrasi. Nama kelas sama dengan nama file dengan pola m_, dengan merujuk pada timestamp UTC (dalam format yymmdd_hhmmss) ketika migrasi dibuat, dan diambil dari parameter name dari command-nya

Method up() harus mengandung code yang mengimplementasikan migrasi database aktual, sedangkan method down() bisa berisi code yang me-revert apa yang telah dilakukan up().

Menjalankan Migrasi

Untuk mengaplikasikan migrasi baru yang tersedia (misalnya membuat database lokal up-to-date), jalankan perintah berikut:

yiic migrate

Perintah ini akan menampilkan daftar semua migrasi yang baru. Jika Anda konfirmasi untuk mengaplikasikan migrasi, maka akan dijalankan method up() di setiap kelas migrasi baru, satu per satu secara berurutan, sesuai dengan urutan nilai timstamp di dalam nama kelas.

Setelah mengaplikasikan migrasi, tool migrasi akan mencatat record di sebuah table database bernama tbl_migration. Dengan demikian memungkinkan tool untuk mengidentifikasikan berapa migrasi yang telah diaplikasikan dan yang mana belum. Jika table tbl_migration tidak ada, maka tool ini akan secara otomatis membuatkannya, tergantung pada database yang dispesifikasikan komponen aplikasi db.

Me-Revert Migrations

Untuk me-revert migrasi yang paling terakhir atau beberapa migrasi yang sudah teraplikasikan, kita dapat menggunakan command berikut ini:

yiic migrate down [step]

dengan parameter opsional step menentukan berapa banyak migrasi yang ingin di-revert. Nilai default-nya adalah 1, yang artinya me-revert kembali ke migrasi yang sudah teraplikasi paling terakhir.

Seperti yang sudah disebutkan sebelumnya, tidak semua migrasi dapat di-revert. Mencoba me-revert migrasi seperti demikian akan menghasilkan error dan menghentikan seluruh proses revert.

Menampilkan Informasi Migrasi

Selain mengaplikasikan dan me-revert migrasi, perangkat migrasi juga dapat digunakan untuk menampilkan histori migrasi dan migrasi baru yang akan diaplikasikan.

yiic migrate history [limit]
yiic migrate new [limit]

Parameter opsional limit menunjukkan angka migrasi yang akan ditampilkan. Jika limit tidak ditentukan, semua migrasi yang tersedia akan ditampilkan.

Perintah pertama yang menampilkan migrasi yang sudah diaplikasikan, sedangkan perintah kedua menampilkan migrasi yang belum diaplikasikan.

Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter

– Eric S. Raymond

Have a better explanation?

If you have comments about this post. Please write your comments below

No comments associated with this article