2015-11-05 141 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();