我正在使用laravel 5.2构建发票应用程序
我想创建自动发票编号递增。意思是,
如果我打开创建发票页面,我应该自动得到#0001,所以当我保存发票时,在我的invoice_number字段下它将是0001,然后当我创建另一个发票时,控制器将检查数据库中的最后一个invoice_number,并自动给我#0002。
有没有关于如何做到这一点或类似的想法??
谢谢
发布于 2016-07-24 01:50:07
按降序从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;发布于 2016-07-24 01:52:18
自动递增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并将数字格式化即可。
https://stackoverflow.com/questions/38544748
复制相似问题