Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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 6中生成唯一编号_Laravel - Fatal编程技术网

在Laravel 6中生成唯一编号

在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'

我正在尝试在Laravel中生成唯一的编号,就像这样
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个字符串。是的,我找到了一种方法,无论如何,谢谢。。。