繁体   English   中英

在 mysql - laravel 中删除后保持发票顺序

[英]keeping the order of invoices after deletion in mysql - laravel

每当用户在我们的 laravel 应用程序中插入发票时,它都会为相应的发票编号。 因此,如果他们输入第一张发票,那么它将是发票 1,第二张发票将是发票 2,依此类推

数字 (1, 2, 3, ..., x) 基本上是 id(它是 invoices 表的主键)。 但是现在假设有 30 张发票,他想删除第 25 张,下一个插入的不是 25 号,而是 31 号,因为它在表中创建了一条新记录,应该25岁,因为那是缺少的那个

我的问题是,如何自动将发票的下一个编号设置为丢失的第一个? 我有一种感觉,我应该创建一个新列来指示发票的编号。 这是创建发票的代码:

        $invoice = new \App\Models\Invoice();
        $invoice->provider_id = $request->input('provider-select');
        $invoice->number = $request->input('document-number');
        $invoice->document_date = $request->input('document-date');
        $invoice->due_date = $request->input('due-date');
        $invoice->discount_procent = $request->input('discount-procent');
        $invoice->discount_value = $request->input('discount-value');
        $invoice->total = $request->input('total-value');
        $invoice->insertion_date = $request->input('insertion-date');
        $invoice->save();

我是否应该创建一个名为numbering的新列并按升序为每张发票分配一个编号,当一张发票被删除时,检测到丢失的一张,然后为下一张发票分配该编号并按numerotate而不是按id过滤它们?

是的,您应该创建一个新领域。 您不应该触摸主键处理。

您可以创建一个新字段,比如说sequence 在插入新数据之前,检查invoice表中缺少的序列并将其分配给该序列。

编辑- 如果您想生成按年排序,您需要维护一个year列,并为检索记录使用sequenceyear列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM