【问题标题】:How to generate unique serial number in laravel如何在laravel中生成唯一的序列号
【发布时间】:2015-04-06 05:55:26
【问题描述】:

我正在尝试为我的客户构建一个应用程序,我的客户希望保留其客户的所有数据。他想为他的客户生成一个唯一的序列号,并且该序列号必须是连续的。他的要求是—— 1.应该有一个表格来创建一个客户条目。 2. 在该表单中应该有一个字段用于唯一的客户 ID。默认情况下,它的值应该是一个序列号,其值为前一个序列号 +1。如果他愿意,他可以更改该字段中的序列号并提交表单。

我发现了一种更简单的方法是从数据库中获取最大 id 并将其增加 +1。但是如果两个人试图将条目插入数据库怎么办?在这种情况下,数据库中会有重复的序列号。

现在,我需要一些帮助来了解如何为每个条目生成唯一且连续的序列号。我将使用mysql数据库。

提前致谢

【问题讨论】:

  • 首先您需要编辑您的问题以包含示例代码。你的问题不是很清楚。如果你想在 laravel 中生成一个随机数,你可以使用 str_random(40);功能。 40 这里是要生成的字符串的长度
  • OP 没有尝试生成随机字符串。
  • 而且问题太宽泛了。

标签: mysql laravel serialization eloquent uniqueidentifier


【解决方案1】:

执行此操作的最佳方法是创建一个附加表,其中一列用于序列号。每次加载表单时,您将从该表中获取最大序列号 +1 并插入该值,并将表单上的序列号字段的值设置为该值。这将确保当两个人同时加载您的表单时,他们仍然会有不同的序列号。这将防止将要插入数据的人觉得他们需要相互竞争才能首先获得该序列号。

其次,在负责存储表单信息的表上,在序号字段上放一个唯一键,这样可以保证序号在插入表时始终是唯一的。

第三,现在尝试在这个表中插入一个非唯一的序列号会因为唯一键而产生一个sql错误。在尝试保存表单数据之前,请确保使用unique 验证器对其进行验证。

【讨论】: