2015-11-05 81 views
0

嗨我有一個表格需要一個唯一的表格編號。基本上我需要的是在表單提交之前,用戶能夠看到表單提交將會有哪些表單編號。表格編號應該是唯一的。Laravel 5自動生成表格編號/標識符

我在想什麼是我要它有單行另一個表:

table:numbers 
->id 
->number 

然後加載窗體時,我會做一個Ajax請求顯示當前數量,並以此爲表格號,然後當用戶提交時,號碼將被更新(增加),因爲它已被使用。但問題是我想要的格式編號爲1, 2, 3 ..,所以我在數據庫中添加了zerofill,但是當我獲取它時,它只顯示沒有零的表單中的數字。有沒有更好的方法呢?我使用MySQL

感謝

+0

應該表格編號是連續的還是可以是隨機的? –

+0

@MilanMaharjan只要獨一無二 – jackhammer013

+0

查看我的答案,我希望它有幫助。 –

回答

0

一個簡單的方法來處理這將是在每次請求一次創建一個新的形式。它可以從主鍵獲得一個順序ID。您可能需要設置一個狀態,以便您可以確定廢棄的表單。因此,在創建時,將表單狀態設置爲「新」。然後,一旦提交,將狀態設置爲「已提交」。我也會爲這些記錄使用時間戳。

這是我如何處理訂單。每次有人開始結帳過程時,我都會創建一個新訂單。然後,我可以使用這些指標來查找放棄訂單數量與完成訂單數量。

0

你可以做的是首先生成一個隨機數字(比如10000和999999之間)。然後檢查它是否已經存在於你的主表中(比如說main_form_table的列名是form_number)。還要檢查數字是否存在於您創建的臨時表(數字)中。如果它已存在於任何表格中,請重新生成隨機數字並再次檢查,直至找到唯一號碼。

一旦找到唯一編號,您可以將其存儲在您創建的臨時表中,以便如果另一個表單嘗試生成一個隨機數,則無法使用此編號。表單提交後,您可以從臨時表中刪除隨機數字條目。此表格編號現在將存儲在您的主表格中,不能再被其他表格使用。

  do { 
       $randomNumber = rand(10000, 999999); 
       $numberInFromTable = MainFormTable::whereFormNumber($randomNumber)->get(); 
       $numberInTempTable = Number::whereId($randomNumber)->get(); 
      }while(!$numberInFromTable->isEmpty() || !$numberInTempTable->isEmpty()); 

      $number = new Number; 
      $number->number = $randomNumber; 
      $number->save();