Laravel 5.2中的自动发票编号生成

时间:2016-07-23 17:41:06

标签: php sql laravel laravel-5.2

我正在使用laravel 5.2构建发票申请

我想创建递增的自动发票号。意思,

如果我打开创建发票页面,我应该自动获得#0001所以当我保存发票时,在我的invoice_number字段下它将是0001然后当我创建另一张发票时,控制器将检查数据库中的最后一个invoice_number并自动给我#0002。

关于如何做到这一点或类似事情的任何想法?

谢谢

2 个答案:

答案 0 :(得分:2)

按降序从db获取最后一条记录。

$invoice = new Invoice();

$lastInvoiceID = $invoice->orderBy('id', DESC)->pluck('id')->first();
$newInvoiceID = $lastInvoiceID + 1;

这将返回最后一个ID。然后向其添加1,并将其显示在前端{{ $newInvoiceID }}

可能的问题:如果两个用户同时创建发票怎么办?一旦保存,如果发票号是唯一标识符,则数字将不同。

一种选择是为每个用户创建发票。

$invoice = new Invoice();

$lastInvoiceID = $invoice->where('user_id', '=', Auth::user()->id)->orderBy('invoice_id', DESC)->pluck('invoice_id')->first();
$newInvoiceID = $lastInvoiceID + 1;

答案 1 :(得分:0)

自动递增MySQL表格中的invoice_number字段(或者只使用' ID'作为您的invoice_number:

CREATE TABLE invoices (
    ID int NOT NULL AUTO_INCREMENT,
    invoice_number NOT NULL AUTO_INCREMENT
)

每次向表中添加发票时,MySQL都会自动为其分配下一个号码。因此,如果表格中的最后一张发票是3,则您插入的下一张发票将被分配4。

如果要显示#0003和#0004等数字,只需在数据库中查询invoice_number,然后用PHP格式化数字。