簡體   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