Laravel中的自动递增数字

时间:2019-02-12 20:47:36

标签: php laravel

我有一段代码可以使订单号像$order->order_no = 'TXT'.date('Ymd').'001';这样简单地产生如下结果:TXT20190213001我的问题是如何使001零件具有动态性,以便像{{ 1}} 001 002,依此类推?

1 个答案:

答案 0 :(得分: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个订单,一天的增量不能超过3位数。

为了简化:

您可以使用表格的自动递增主键,并向其添加前导零。

$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 package来完成相同的操作。

相关问题