Many-to-Many — Laravel

Relasi many-to-many membutuhkan tabel pivot penghubung. Contoh: User bisa punya banyak Role, Role bisa punya banyak User Migration (tabel pivot)…

Relasi many-to-many membutuhkan tabel pivot penghubung.

Contoh: User bisa punya banyak Role, Role bisa punya banyak User

Migration (tabel pivot):

Schema::create("role_user", function (Blueprint $table) {
    $table->foreignId("user_id")->constrained()->cascadeOnDelete();
    $table->foreignId("role_id")->constrained()->cascadeOnDelete();
    $table->primary(["user_id", "role_id"]);
});

Model:

class User extends Model {
    public function roles(): BelongsToMany {
        return $this->belongsToMany(Role::class);
    }
}

class Role extends Model {
    public function users(): BelongsToMany {
        return $this->belongsToMany(User::class);
    }
}

Operasi:

// Tambah role ke user
$user->roles()->attach($roleId);
$user->roles()->attach([1, 2, 3]);

// Hapus role dari user
$user->roles()->detach($roleId);

// Sync (set exact roles)
$user->roles()->sync([1, 3]); // Hapus role lain, set hanya 1 & 3

// Cek relasi
$user->roles->contains($roleId); // true/false

Yang akan kamu pelajari