使用队列时的唯一序号(1个工作程序)

时间:2019-03-01 13:36:18

标签: laravel eloquent laravel-5.7

我正在尝试生成唯一的顺序发票编号。发票是使用1名工作人员的队列生成的,但是在160张发票中,有28张仍然有重复的编号。 以下是用于生成唯一发票编号的代码。

public static function getNewInvoiceNumber(String $prefix)
{
    $lastNumber = App\Invoice::where('invoiceNumber', 'LIKE', $prefix . now()->year . '-%')->orderByDesc('invoiceID')->first()->invoiceNumber ?? '0';
    $newNumber = (int)substr($lastNumber, strlen($prefix . now()->year . '-')) + 1;

    while (App\Invoice::where('invoiceNumber', $prefix . now()->year . '-' . $newNumber)->exists()) {
        $newNumber++;
    }

    return $newNumber;
}

0 个答案:

没有答案