CRUD Yii2 – Membuat Buku Telepon – Step 1 (Migrasi Database)

Untuk membuat aplikasi menggunakan database, sebelumnya kamu harus melakukan konfigurasi untuk melakukan koneksi ke database. Konfigurasi database sendiri terdapat pada file db.php yang ada pada folder config config/db.php silahkan sesuaikan nilai-nilai seperti host, username, password maupun port yang sesuai dengan konfigurasi databasemu.

Setelah melakukan konfigurasi mari kita lanjutkan untuk membuat sebuah tabel yang akan digunakan untuk menyimpan buku telepon.

  • Id dengan tipe data Interger 11 (angka) dan Auto Increment
  • Name dengan tipe data varchar 100
  • Phone dengan tipe data varchar 20 dan Unik

Kita akan memberikan nama untuk tabel diatas dengan nama phone_book, setelah persiapan untuk pembuatan tabel selesai, selanjutnya kita membuat file migrationnya menggunakan CLI yang telah disediakan oleh Yii.

Buka CMD/Terminal dan arahkan ke folder project, kemudian ketik

E:\PROJECT\WEB\tutorial-yii2>yii migrate/create phone_book

Jika koneksi database anda sukses maka akan ada konfirmasi pembuatan file migration

Yii Migration Tool (based on Yii v2.0.14-dev)

Create new migration 'E:\PROJECT\WEB\tutorial-yii2/migrations\m180215_074145_phonebook.php'? (yes|no) [no]:

Jawab yes [enter] untuk melanjutkan. Jika anda mendapatkan pesan

New migration created successfully.

Itu artinya file migration telah berhasil dibuat. Silahkan kamu lihat pada folder migrations, dan kamu akan mendapati file dengan awalan m diikuti angka dan diakhiri dengan nama tabel yang kamu buat. Seperti contoh m180215_074145_phone_book.php

Oh ya kenapa kita sebaiknya menggunakan migration dalam pembuatan database/tabel?

Sama seperti halnya dengan source code, 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 strutktural database ini (yang disebut dengan migration (migrasi) seperti halnya yang kita lakukan pada source code. Jika source code dan database tidak tersinkronisasi, besar peluangnya keseluruhan aplikasi akan rusak (keterangan diambil dari dokumentasi Yii).

Selanjutnya mari kita terapkan rancangan tabel yang telah kita buat tadi kedalam file migration

<?php

use yii\db\Migration;

/**
 * Class m180215_074145_phone_book
 */
class m180215_074145_phone_book extends Migration {
    const TABLE_NAME = '{{%phone_book}}';

    public function up() {
        $this->createTable(static::TABLE_NAME, [
            'id' => $this->primaryKey(11),
            'name' => $this->string(100)->notNull(),
            'phone' => $this->string(20)->notNull()->unique(),
        ]);
    }

    public function down() {
        $this->dropTable(static::TABLE_NAME);
    }

}

Setelah kode migrasi untuk tabel phone_book dibuat, selanjutnya kita eksekusi lewat CMD/Terminal dengan perintah

E:\PROJECT\WEB\tutorial-yii2>yii migrate

Dan kamu akan mendapatkan pesan respon

Yii Migration Tool (based on Yii v2.0.14-dev)

Creating migration history table "migration"...Done.
Total 1 new migration to be applied:
        m180215_074145_phone_book

Apply the above migration? (yes|no) [no]:

Jawab dengan mengetikan yes [enter], Ketika kamu mendapatkan pesan seperti ini

*** applying m180215_074145_phone_book
    > create table {{%phone_book}} ... done (time: 0.356s)
*** applied m180215_074145_phone_book (time: 0.546s)


1 migration was applied.

Migrated up successfully.

Maka proses migrasi tabel phone_book telah berhasil di buat pada database. Nah sampai disini untuk step 1 ini, pada pembahasan selanjutnya, kita akan membuat model untuk tabel phone_book.

Catatan:

Pada Tutorial CRUD ini kita tidak akan menyentuh Gii

Seberapa manfaat turorial ini?
No Responses

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.