按Laravel PHP/MYSQL中添加的编号的最后日期递增唯一发票编号
我需要生成唯一的递增发票号码(字符串)的最后日期添加的数字。发票号码没有默认格式,用户可以自由注册任何字符串。示例:00001、abc、EP-2018/00005等 好的,你需要怎么工作? 如果用户将字符串0001注册为发票编号,则在“添加新发票”页面上,需要显示下一个递增编号,在这种情况下将为0002。如果用户以字符串abc作为发票编号注册发票,则在“添加新发票”页面上,需要显示abd。 所以,正如您所看到的,这取决于添加编号的最后日期,因为第二个字符串是abc,现在我们在“添加新发票”页上看到abd是下一个唯一编号 另一个例子,这里的工作变得非常复杂: 如果在db中,我们已经有编号为“abd”的发票,并且这是非常旧的,那么我们需要得到下一个递增的编号,这是“abe” 数据库表“发票”:按Laravel PHP/MYSQL中添加的编号的最后日期递增唯一发票编号,php,mysql,laravel,unique,invoice,Php,Mysql,Laravel,Unique,Invoice,我需要生成唯一的递增发票号码(字符串)的最后日期添加的数字。发票号码没有默认格式,用户可以自由注册任何字符串。示例:00001、abc、EP-2018/00005等 好的,你需要怎么工作? 如果用户将字符串0001注册为发票编号,则在“添加新发票”页面上,需要显示下一个递增编号,在这种情况下将为0002。如果用户以字符串abc作为发票编号注册发票,则在“添加新发票”页面上,需要显示abd。 所以,正如您所看到的,这取决于添加编号的最后日期,因为第二个字符串是abc,现在我们在“添加新发票”页上看
- id(自动递增)
- 数字(字符串)
- 更新时间(时间戳)
如果$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;