Laravel 唯一的随机字符串数

Laravel unique random string number

我想用数字制作一个无限字符串。在这里执行此操作的最佳方法是什么,例如mt_rand(1000000, 9000000) 但如果在 10000009000000 之间一切都被占用,则没有更多的数字。使用的数字越多,出现错误的频率就越高,if else 必须一次又一次地通过整个 table。

public function creating(Ticket $ticket)
{
    $randomNumber = mt_rand(1000000, 9000000);

    if(!Ticket::where('number', '=', $randomNumber)->exists()) {
        $ticket->fill(['number' => $randomNumber]);
    } else {
        $this->creating($ticket);
    }
}

最好的方法是什么?我希望它是一个唯一的数字字符串。没有尽头。

为保证编号唯一,您应该改用 created。每当创建工单时,您都可以在 id 前添加一些随机数以生成唯一编号。试试这个

public function created(Ticket $ticket) {
    $ticket->number = rand(1000, 9999).str_pad($ticket->id, 3, STR_PAD_LEFT);
    $ticket->save();
}