DEV Community

Muhammad Iqbal
Muhammad Iqbal

Posted on

Database: Migrations

Database Migrations pada Laravel adalah cara untuk mengelola skema database menggunakan kode. Dengan migrations, kamu bisa membuat, mengubah, dan menghapus tabel serta kolom dalam database secara terprogram dan versi kontrol. Berikut adalah beberapa kegunaan utama dari database migrations pada Laravel:

A. Versi Kontrol Skema Database:

  • Migrations memungkinkan kamu untuk melacak perubahan skema database dalam repositori versi kontrol (seperti Git), sehingga setiap perubahan pada skema database dapat dilacak dan dikelola dengan baik.
   php artisan make:migration create_users_table
Enter fullscreen mode Exit fullscreen mode

B. Migrasi Berbasis Tim:

  • Migrations memungkinkan banyak pengembang untuk bekerja bersama pada proyek yang sama dan memastikan bahwa setiap pengembang memiliki skema database yang konsisten dengan menjalankan migrate command.
   php artisan migrate
Enter fullscreen mode Exit fullscreen mode

C. Rollback dan Redo Migrations:

  • Migrations memungkinkan kamu untuk mengembalikan perubahan (rollback) jika terjadi kesalahan atau jika kamu ingin kembali ke versi sebelumnya dari skema database.
   php artisan migrate:rollback
Enter fullscreen mode Exit fullscreen mode

D. Mempermudah Deployment:

  • Migrations memudahkan penerapan perubahan skema database ke lingkungan produksi atau staging dengan cara yang terstruktur dan dapat diulang.
   php artisan migrate --force
Enter fullscreen mode Exit fullscreen mode

E. Pembuatan Tabel dan Kolom:

  • Dengan migrations, kamu dapat membuat tabel dan kolom dengan mudah menggunakan schema builder yang disediakan oleh Laravel.
   public function up()
   {
       Schema::create('users', function (Blueprint $table) {
           $table->id();
           $table->string('name');
           $table->string('email')->unique();
           $table->timestamps();
       });
   }

   public function down()
   {
       Schema::dropIfExists('users');
   }
Enter fullscreen mode Exit fullscreen mode

F. Mengubah Tabel dan Kolom:

  • Migrations memungkinkan kamu untuk menambah, mengubah, atau menghapus kolom dan tabel yang sudah ada.
   public function up()
   {
       Schema::table('users', function (Blueprint $table) {
           $table->string('phone')->nullable();
       });
   }

   public function down()
   {
       Schema::table('users', function (Blueprint $table) {
           $table->dropColumn('phone');
       });
   }
Enter fullscreen mode Exit fullscreen mode

G. Seeder dan Factory Integration:

  • Migrations bekerja dengan baik bersama seeder dan factory untuk memasukkan data uji ke dalam database setelah melakukan migrasi.
   php artisan db:seed
Enter fullscreen mode Exit fullscreen mode

H. Indeks dan Constraints:

  • Migrations memungkinkan kamu untuk menambahkan indeks, primary key, foreign key, dan constraints lainnya ke tabel dengan mudah.
   public function up()
   {
       Schema::table('posts', function (Blueprint $table) {
           $table->foreignId('user_id')->constrained()->onDelete('cascade');
       });
   }

   public function down()
   {
       Schema::table('posts', function (Blueprint $table) {
           $table->dropForeign(['user_id']);
       });
   }
Enter fullscreen mode Exit fullscreen mode

Contoh Penggunaan Migrations

Berikut adalah contoh lengkap dari sebuah migration yang membuat tabel posts:

php artisan make:migration create_posts_table
Enter fullscreen mode Exit fullscreen mode
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePostsTable extends Migration
{
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->id();
            $table->string('title');
            $table->text('content');
            $table->foreignId('user_id')->constrained()->onDelete('cascade');
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('posts');
    }
}
Enter fullscreen mode Exit fullscreen mode

Kesimpulan

Database Migrations pada Laravel adalah alat yang sangat berguna untuk mengelola dan melacak perubahan skema database secara terstruktur dan dapat diulang. Mereka memungkinkan pengembang untuk bekerja bersama dalam tim, mendukung rollback perubahan jika diperlukan, dan mempermudah deployment serta pemeliharaan skema database. Dengan menggunakan migrations, kamu dapat memastikan bahwa skema database tetap konsisten dan dikelola dengan baik sepanjang siklus hidup aplikasi.

Top comments (0)