Laravel 5自动生成表格编号/标识符

时间:2015-11-05 14:53:37

标签: mysql laravel automation

您好我有一张需要独特表格编号的表格。基本上我需要的是在提交表单之前,用户能够看到表单提交将具有哪个表单编号。表格编号应该是唯一的。

我在思考的是我还有另一张桌子,只有一行:

table:numbers
->id
->number

然后当表单加载时,我会发出ajax请求以显示当前号码并将其用作表单号,然后当用户提交时,该号码将被更新(递增),因为它已被使用。但问题是我希望表单编号格式化为1, 2, 3 ..所以我在数据库上添加了zerofill但是当我获取它时它只显示我的表单中没有零的数字。有更好的方法吗?我正在使用MySQL

由于

2 个答案:

答案 0 :(得分:0)

处理此问题的一种简单方法是在每次请求时创建一个新表单。它可以从主键获取顺序ID。您可能希望设置状态,以便可以识别已放弃的表单。因此,在创建时,将表单状态设置为“新”。然后,一旦提交,将状态设置为“已提交”。我也会为这些记录使用时间戳。

这是我处理订单的方式。每当有人开始结账过程时,我都会创建一个新订单。然后,我可以使用这些指标来查找已完成订单与已完成订单的数量。

答案 1 :(得分: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();