我正在使用laravel 5.2构建发票申请
我想创建递增的自动发票号。意思,
如果我打开创建发票页面,我应该自动获得#0001所以当我保存发票时,在我的invoice_number字段下它将是0001然后当我创建另一张发票时,控制器将检查数据库中的最后一个invoice_number并自动给我#0002。
关于如何做到这一点或类似事情的任何想法?
谢谢
答案 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格式化数字。