Generate Kode Otomatis di Laravel
Cara generate kode otomatis di Laravel dengan format tertentu
Contoh: BR0001, BR0002, dst
public function generateKode()
{
$lastRecord = Barang::orderBy('id', 'desc')->first();
$lastKode = ($lastRecord) ? intval(substr($lastRecord->kode, 2)) : 0;
$nextNumber = $lastKode + 1;
$formattedNumber = str_pad($nextNumber, 4, '0', STR_PAD_LEFT);
$newKode = 'BR' . $formattedNumber;
return $newKode;
}
$lastRecord
adalah data terakhir dari database barang$lastKode
untuk mengambil kode terakhir, jika$lastRecord
kosong, maka$lastKode
nya di set ke 0substr($lastRecord->kode, 2)
untuk mengambil string mulai dari index ke-2, karena contohnya adalahBR0001
dan diawal string ada 2 karakter yang non-numerik, maka menggunakan substr dengan index 2- Setelah di substr maka hasilnya adalah
0001
jadi digunakanintval
untuk mengkonversinya kedalam integer value str_pad($nextNumber, 4, '0', STR_PAD_LEFT)
untuk menambahkan karakter0
sampai sebanyak4
karakter dan tambahkannya di bagian kiri, sehingga hasilnya0002
,0011
, dst- Hasil dari
$formattedNumber
lalu ditambahkan awalanBR
- Kode baru tersebut yang akan di return
Contoh pemanggilannya
$kode = $this->generateKode();
Contoh lain untuk generate invoice dengan format berikut
No invoice: TRX/2024/Feb/0001, TRX/2024/Mar/0002, dst
public function generateKode()
{
$year = now()->year;
$month = now()->format('M');
$lastPenjualan = Penjualan::whereMonth('created_at', now()->month)
->orderBy('id', 'DESC')
->first();
$lastNumber = 1;
if ($lastPenjualan) {
$lastNumber = intval(substr($lastPenjualan->kode, -4)) + 1;
}
$lastKode = sprintf('%04d', $lastNumber);
$kode = "PJ/{$year}/{$month}/{$lastKode}";
return $kode;
}
sprintf
untuk padding string 4 karakter dengan isian angka 0- Misal angka 1 -> 0001, 2 -> 0002, 14 -> 0014, dst
substr($lastPenjualan->kode, -4)
digunakan untuk mengambil 4 digit dari paling belakang