Автоматическое увеличение числа в laravel

У меня есть кусок кода, чтобы сделать номера заказа, как $order->order_no = 'TXT'.date('Ymd').'001'; это просто приводит к таким результатам: TXT20190213001 моя проблема в том, как сделать 001 часть динамическая для того, чтобы увеличить его как 001 002 003 и так далее?

1

Решение

// Get the last order id
$lastorderId = Order::orderBy('id', 'desc')->first()->order_no;

// Get last 3 digits of last order id
$lastIncreament = substr($lastorderId, -3);

// Make a new order id with appending last increment + 1
$newOrderId = 'TXT' . date('Ymd') . str_pad($lastIncreament + 1, 3, 0, STR_PAD_LEFT)

Тем не менее, это позволит вам иметь до 999 номеров. Вы можете иметь 001-999 для каждого дня, так что вы можете иметь максимум 999 заказов в день, не превышая трехзначных приращений в течение дня.

Упростить :

Вы можете использовать автоинкрементный первичный ключ таблицы и добавить к нему начальные нули.

$orderStmt = DB::select("SHOW TABLE STATUS LIKE 'orders'");
$nextPrimaryKeyId = $orderStmt[0]->Auto_increment;

Now you can add leading zeros :

$nextPrimaryKeyId = str_pad($nextPrimaryKeyId, 6, 0);
// Above will make increment id 23 as 000023

а затем использовать его внутри нового порядка.

или .. Вы можете использовать UUID пакет сделать то же самое.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector