Membuat Kode Otomatis dengan Prefix di Laravel

Konten Halaman

Kenapa Saya Belajar Ini

Saya butuh fitur kecil: sistem penomoran otomatis dengan format seperti ABC001, ABC002, atau misal IF001, IF002, tergantung prefix yang saya tentukan.

Kebutuhan ini muncul karena di beberapa kasus pengen ada penomoran kode yang rapi dan konsisten tanpa harus mengisi manual.


Apa yang Saya Pelajari

Ternyata logikanya gak serumit yang saya bayangkan. Intinya cuma mencari kode terakhir berdasarkan prefix, lalu menambahkannya satu angka.

Contoh fungsinya, kurang lebih seperti ini:

public function generateKode($prefix)
{
    $last = Model::where('kode', 'like', $prefix . '%')
        ->orderBy('kode', 'desc')
        ->first();

    if ($last) {
        $num = intval(substr($last->kode, -3)) + 1;
    } else {
        $num = 1;
    }

    $number = str_pad($num, 3, '0', STR_PAD_LEFT);

    return $prefix . $number;
}

Logikanya sederhana: cari data terakhir berdasarkan prefix, urutkan descending, ambil baris teratas. Kalau ada datanya, ambil tiga angka terakhir. Kalau tidak ada, berarti mulai dari satu. Setelah itu tinggal pad angka tersebut sesuai panjang yang kita butuhkan.

Satu hal yang saya tambahkan sendiri: usahakan kolom kode di database diberi index (misalnya index() atau unique() jika memang harus unik) supaya query pencarian berdasarkan prefix tetap efisien.


Insight

Fungsi untuk generate kodenya sederhana, singkat, prefix yang dinamis, dan panjang angka juga gampang disesuaikan. Ke depannya, mungkin lebih baik dibuat helper atau trait supaya bisa dipakai di banyak model tanpa copy-paste fungsinya ke setiap controller.