BoraN7 İşinize yarar mı bilmem ama şöyle bir yöntem yazmıştım:
Bu kod ve mantık yanlış, kullanmayın. Yine de silmiyorum 🙁
function generate(int $id): string
{
$letters = range('A', 'Z');
$arr = [[]];
foreach ([$letters, $letters] as $i => $v) {
$couple = [];
foreach ($arr as $result) {
foreach ($v as $item) {
$result[$i] = $item;
$couple[] = $result;
}
}
$arr = $couple;
}
$arr = array_map(fn($v) => implode('', $v), $arr);
$prefix = $arr[floor($id / 100000000)];
return sprintf('%s%s', $prefix, str_pad(substr($id, -3), 3, '0', STR_PAD_LEFT));
}
Elbette bunun için önce siparişin oluşup bir id alması gerekiyor. Sipariş oluştuktan sonra bununla oluşturup siparişi güncelliyordum. Burada amaç benzersiz, okunaklı ve daima 12 karakterden oluşacak ama aynı zamanda veritabanında indexten faydalanabilecek sıralı bir sipariş no oluşturmaktı:
$testOrderIds = [1, 98, 762, 665345, 3891262, 52600033, 456060338, 2999999998];
$results = [];
foreach($testOrderIds as $id) {
$results[generate($id)] = $id;
}
{
"AA0000000001": 1,
"AA0000000098": 98,
"AA0000000762": 762,
"AA0000665345": 665345,
"AA0003891262": 3891262,
"AA0052600033": 52600033,
"AE0456060338": 456060338,
"BD2999999998": 2999999998
}