[英]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
列,並為檢索記錄使用sequence
和year
列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.