Lewati ke konten utama
  1. Artikel-artikel/

Membuat Relasi Supaya Bisa di-Nullable Pada Laravel

·153 kata·1 menit· loading · loading · ·
Article Tech Laravel

Thumbnail oleh Markus Spiske di Unsplash

Pada saat pengembangan blog ini, Saya ingin menambahkan sebuah fitur view yang digunakan untuk meninjau tulisan mana yang ramai pengunjung/pembaca. Tentunya akan ada dua kasus saat pembuatan view ini:

  1. Pembaca yang terautentikasi (pada saat tulisan ini dibuat, form login belum dibuat), sistem akan mengirimkan user_id ke tabel view.
  2. Pembaca yang BELUM terautentikasi/anonim, sistem akan mengirimkan null ke field user_id.

Skema migrasi yang Saya buat adalah seperti ini:

Schema::create('views', function (Blueprint $table) {
    $table->id();
    $table->foreignId('user_id')->constrained()->nullable();
    $table->foreignId('blog_id')->constrained();
    $table->timestamps();
});

Testing tahap pertama, ketika User terautentikasi, data view dapat tersimpan dengan baik di database. Tanpa error. Namun Saya tersadar pada saat testing berjalan, session Saya masih ada, dan ketika saya log out, terjadilah error:

Error: column user_id cannot be null

Ternyata cara penyelesaiannya cukup simpel, dan tidak membutuhkan waktu lama. Kita hanya perlu mengubah:

// Sebelum
$table->foreignId('user_id')->constrained()->nullable();

// Setelah
$table->foreignId('user_id')->nullable()->constrained();

Kode selengkapnya:

Schema::create('views', function (Blueprint $table) {
    $table->id();
    $table->foreignId('user_id')->nullable()->constrained();
    $table->foreignId('blog_id')->constrained();
    $table->timestamps();
});

Terima kasih sudah membaca!

Terkait

Laravel 9 8 Diluncurkan
·234 kata·2 menit· loading · loading
Article Laravel Php
Konsep Dasar Sistem, Konsep Dasar Informasi, dan Konsep Dasar Sistem Informasi
·888 kata·5 menit· loading · loading
Article Kuliah