Laravel 5.8 Menjadikan BigIncrements Sebagai Default
Laravel 5.8 Menjadikan BigIncrements Sebagai Default

12 Juni 2019 / Muhammad Amirul Ihsan

Assalamualaikum Warrahmatullah Wabarakatuh,

Pada Laravel 5.8 ada satu perubahan yang tidak disebutkan dalam catatan upgrade official tapi bisa meimbulkan masalah dimana kita akan gagal membuat sebuah foreign key karena disebabkan pada Laravel 5.8 menjadikan BigIncrements sebagai default untuk primary keynya. Sebagai gambaran ini adalah kondisinya dari masalah tersebut.

Contoh Kondisi Masalah

Ketika mengerjakan project, saya membuat sebuah tabel sederhana.

php artisan make:migration create_articles_table

kemudian saya tambahkan beberapa kolom untuk migration tersebut

Schema::create('articles', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->integer('user_id')->unsigned();
    $table->string('title');
    $table->text('content');
    $table->timestamps();

    $table->foreign('user_id')->references('id')->on('users')
        ->onUpdate('CASCADE')->onDelete('CASCADE');
});

Dan inilah yang terjadi ketika saya jalankan php artisan migrate

Error Migration Laravel

Error tersebut tidak memberikan pesan yang jelas, setelah ditelisik pada migration tabel users dari bawaan laravel, primary keynya menggunakan format BigIncrementsmaka harusnya untuk foreign key kita gunakan BigIntegerjadi untuk solusi dalam pembuatan foreign key di Laravel 5.8 adalah menggunakan BigInteger jadi migration yang dibuat untuk foreign key harusnya seperti ini.

Schema::create('articles', function (Blueprint $table) {
    $table->bigIncrements('id');
    $table->bigInteger('user_id')->unsigned();
    $table->string('title');
    $table->text('content');
    $table->timestamps();

    $table->foreign('user_id')->references('id')->on('users')
        ->onUpdate('CASCADE')->onDelete('CASCADE');
});

Semoga bermanfaat,

Wassalamualaikum Warrahmatullah Wabarakatuh

Suka dengan artikel ini? Bantu bagikan ke yang lainnya :)