在Laravel 6中生成唯一编号
我正在尝试在Laravel中生成唯一的编号,就像这样在Laravel 6中生成唯一编号,laravel,Laravel,我正在尝试在Laravel中生成唯一的编号,就像这样INV-0001INV-0002 $expense->reference_no = 'EP' . now()->year . '/' . str_pad($request->id , 4, '0', STR_PAD_LEFT); $count = Expense::whereDay('created_at', date('d'))->count(); $expense->reference_no = 'EP'
INV-0001
INV-0002
$expense->reference_no = 'EP' . now()->year . '/' . str_pad($request->id , 4, '0', STR_PAD_LEFT);
$count = Expense::whereDay('created_at', date('d'))->count();
$expense->reference_no = 'EP' . now()->year . '/' . str_pad($count + 1 , 4, '0', STR_PAD_LEFT);
但它只生成
EP2019/0000
。有没有一种方法可以证明这一点?谢谢……您可以使用sprintf()
来完成此任务
下面的内容应该可以满足您的需要:
sprintf("INV-%04d", $request->id);
示例:
>>> sprintf("INV-%04d", 1)
=> "INV-0001"
>>> sprintf("INV-%04d", 2)
=> "INV-0002"
>>> sprintf("INV-%04d", 456)
=> "INV-0456"
您可以将
04d
中的4
替换为任何要填充的数字。在上面的示例中,如果提供的数字不够大,我们需要一个由4位数字组成的数字,并用0填充。希望此逻辑能对您有所帮助
<?php
$i = 1;
echo date("Y") . "<br>";
echo $i . "<br>";
for ($i = 1; $i <= 9999; $i++) {
$str = "";
if ($i < 10) {
$str = "000" . $i;
} elseif ($i < 100) {
$str = "00" . $i;
} elseif ($i < 1000) {
$str = "0" . $i;
} else {
$str = "" . $i;
}
echo "EP".date("Y") . "/" . $str . "<br>";
}
?>
谢谢
Priyank Panchal我找到了一种方法,只要用这样一种方法就可以得到我想要的东西
$expense->reference_no = 'EP' . now()->year . '/' . str_pad($request->id , 4, '0', STR_PAD_LEFT);
$count = Expense::whereDay('created_at', date('d'))->count();
$expense->reference_no = 'EP' . now()->year . '/' . str_pad($count + 1 , 4, '0', STR_PAD_LEFT);
尝试php mt_rand(min,max)函数do u means
'INV-'.str_pad($request->id,4,'0',str_pad_LEFT)
@TsaiKoga yah不管怎样,我只想在我们创建..@CamBoKiDz时生成唯一的id,所以你需要确保$request->id
是唯一的,所有这些数字不能超过INV-9999
,这意味着它只有10000个字符串。是的,我找到了一种方法,无论如何,谢谢。。。