Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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
按Laravel PHP/MYSQL中添加的编号的最后日期递增唯一发票编号_Php_Mysql_Laravel_Unique_Invoice - Fatal编程技术网

按Laravel PHP/MYSQL中添加的编号的最后日期递增唯一发票编号

按Laravel PHP/MYSQL中添加的编号的最后日期递增唯一发票编号,php,mysql,laravel,unique,invoice,Php,Mysql,Laravel,Unique,Invoice,我需要生成唯一的递增发票号码(字符串)的最后日期添加的数字。发票号码没有默认格式,用户可以自由注册任何字符串。示例:00001、abc、EP-2018/00005等 好的,你需要怎么工作? 如果用户将字符串0001注册为发票编号,则在“添加新发票”页面上,需要显示下一个递增编号,在这种情况下将为0002。如果用户以字符串abc作为发票编号注册发票,则在“添加新发票”页面上,需要显示abd。 所以,正如您所看到的,这取决于添加编号的最后日期,因为第二个字符串是abc,现在我们在“添加新发票”页上看

我需要生成唯一的递增发票号码(字符串)的最后日期添加的数字。发票号码没有默认格式,用户可以自由注册任何字符串。示例:00001、abc、EP-2018/00005等

好的,你需要怎么工作? 如果用户将字符串0001注册为发票编号,则在“添加新发票”页面上,需要显示下一个递增编号,在这种情况下将为0002。如果用户以字符串abc作为发票编号注册发票,则在“添加新发票”页面上,需要显示abd。 所以,正如您所看到的,这取决于添加编号的最后日期,因为第二个字符串是abc,现在我们在“添加新发票”页上看到abd是下一个唯一编号

另一个例子,这里的工作变得非常复杂: 如果在db中,我们已经有编号为“abd”的发票,并且这是非常旧的,那么我们需要得到下一个递增的编号,这是“abe”

数据库表“发票”:

  • id(自动递增)
  • 数字(字符串)
  • 更新时间(时间戳)
例1:

id | number | updated_at ------------------------ 1 abc 2020-03-14 11:50:09 2 abd 2020-03-14 11:39:03
如果$LATESTBYUPDATEDATE和$latestByNumber仅为字符或数字,则一切正常。如果尝试将00001与abc进行比较,则结果将是错误的。

请您的问题显示几个不同的发票编号序列示例。好的,我添加了更多示例。这听起来很可怕,但祝您好运 id | number | updated_at ------------------------ 1 abe 2020-03-14 11:49:09 2 abc 2020-03-14 11:50:09 3 abd 2020-03-14 11:49:09 4 00001 2020-03-15 10:45:52 5 abf 2020-03-15 10:42:50
    $latestByUpdatedDate = Invoice::latest('updated_at')->first();

    $latestByNumber = Invoice::latest('number')->first();


    if($latestByUpdatedDate > $latestByNumber){
        return ++$latestByUpdatedDate->number;
    }

    return ++$latestByNumber->number;