Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何为laravel中的每个用户生成唯一的自动增量值并将其添加到数据库中_Php_Mysql_Laravel - Fatal编程技术网

Php 如何为laravel中的每个用户生成唯一的自动增量值并将其添加到数据库中

Php 如何为laravel中的每个用户生成唯一的自动增量值并将其添加到数据库中,php,mysql,laravel,Php,Mysql,Laravel,我正在开发一个活动组织网站。在这里,当用户注册一个事件时,他将得到一个唯一的随机数(10位),我们使用它生成一个条形码并将其邮寄给他。现在, 我想让每个注册事件的编号都是唯一的 而且是自动递增的 一种解决方案是获取数组中的所有自动递增数字,并使用laravel生成一个自动递增数字,其形式为(000000000 1到9999999999),并循环检查所有值。获取不等于数组中任何值的第一个值,并将其添加到数据库中 但我认为可能有更好的解决办法。有什么建议吗?选择数据库中存储的最大数字,并在其中添加1

我正在开发一个活动组织网站。在这里,当用户注册一个事件时,他将得到一个唯一的随机数(10位),我们使用它生成一个条形码并将其邮寄给他。现在,

  • 我想让每个注册事件的编号都是唯一的
  • 而且是自动递增的 一种解决方案是获取数组中的所有自动递增数字,并使用laravel生成一个自动递增数字,其形式为(000000000 1到9999999999),并循环检查所有值。获取不等于数组中任何值的第一个值,并将其添加到数据库中

  • 但我认为可能有更好的解决办法。有什么建议吗?

    选择数据库中存储的最大数字,并在其中添加1,如:

    SELECT (MAX(Column_Name)+1) AS Max_val FROM Table_Name;
    

    选择数据库中存储的最大数字,并在其中添加1,如:

    SELECT (MAX(Column_Name)+1) AS Max_val FROM Table_Name;
    

    我建议使用
    Carbon
    类的简单的基于时间戳的解决方案来使用时间戳生成唯一的数字。使用
    时间戳
    生成基本的唯一随机戳非常简单。 您可以使用如下所示

    使用碳\碳;
    $current_timestamp=Carbon::now()->timestamp;//生产类似于1552296328的产品
    
    您可以将其用作唯一标识符。如果您想要下一个数字,只需
    +1
    。但请记住,您必须及时管理另一个编号批次。(也就是说,如果您现在以增量方式生成了500个数字,则在接下来的500秒内不应生成另一个数字。否则,它将重复该数字)。如果你想知道更多,你可以阅读


    使用rand()函数的解决方案在这里可能不起作用,因为它可以重新生成数据库中的现有编号,并且您将因违反唯一约束而出错(即,如果您在DB中有唯一列)。

    我建议使用
    Carbon
    类的简单时间戳解决方案使用时间戳生成唯一编号。使用
    时间戳
    生成基本的唯一随机戳非常简单。 您可以使用如下所示

    使用碳\碳;
    $current_timestamp=Carbon::now()->timestamp;//生产类似于1552296328的产品
    
    您可以将其用作唯一标识符。如果您想要下一个数字,只需
    +1
    。但请记住,您必须及时管理另一个编号批次。(也就是说,如果您现在以增量方式生成了500个数字,则在接下来的500秒内不应生成另一个数字。否则,它将重复该数字)。如果你想知道更多,你可以阅读


    使用rand()函数的解决方案在这里可能不起作用,因为它可以重新生成数据库中的现有数字,并且您将因违反唯一约束而出错(即,如果您在DB中有唯一列)。

    无论您使用什么方法,它都不会是真正的随机数。会的。对于您的情况,我认为零填充的自动增量应该足够了

    但若你们打算使用随机数,那个么使用PHP的函数就足够了。10位数表示1000000000个唯一数字。除非您的项目有数百万个事件,否则实际上应该没有问题。因此,方法1应该没有问题。此外,您可以在生成任意随机数后检查该数字是否已经存在(存在0.000001%或类似概率)。如果存在,则再次尝试生成一个随机数


    但是,如果您的项目非常成功(即数百万个事件),那么类似的问题可能会慢慢出现

    无论你使用什么方法,它都不会是真正随机的。会的。对于您的情况,我认为零填充的自动增量应该足够了

    但若你们打算使用随机数,那个么使用PHP的函数就足够了。10位数表示1000000000个唯一数字。除非您的项目有数百万个事件,否则实际上应该没有问题。因此,方法1应该没有问题。此外,您可以在生成任意随机数后检查该数字是否已经存在(存在0.000001%或类似概率)。如果存在,则再次尝试生成一个随机数


    但是,如果您的项目非常成功(即数百万个事件),那么类似的问题可能会慢慢出现

    MySQL UUID将为您提供真正独特的解决方案是:


    您不必担心自动递增。

    MySQL UUID将为您提供真正独特的是:


    你不必担心自动递增。

    检查这个答案,你能生成吗?他们必须是10位整数吗?检查这个~->检查这个答案你能生成吗?它们必须是10位整数吗?检查这个~->这是唯一可以自动递增的现实解决方案。它不是随机的,但OP真的需要它吗?这是唯一一个也会自动递增的现实解决方案。这不是随机的,但OP真的需要它吗?