随机唯一ID

时间:2016-07-05 04:54:53

标签: laravel-5

我尝试使用randomString()生成类似6B6E23518的内容,我在控制器内部调用

 function randomString($chars=10) //generate random string
{
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randstring = '';
    for ($i = 0; $i < $chars; $i++) {
        $randstring .= $characters[rand(0, strlen($characters))];
    }
    return $randstring;
}

public function store(TicketsCreateRequest $request)
{
    $ticket = $user->tickets()->create([

            'ticket_hash' => $this->randomString(10),
            // ....


    ]);
}

但这会继续将0存入&#39; ticket_hash&#39;什么都没有产生?

2 个答案:

答案 0 :(得分:0)

查看源代码,randomString()是控制器类的公共方法,还是在类外的其他地方声明的全局函数?我问,因为它在没有public可见性限定符的情况下进入上面,并且对它下面的方法略有不同的缩进。

如果此功能不是您课程的实时方法,那么您对$this->randomString()的调用可能不会调用您希望它调用的方法。如果您的randomString()函数是其他地方定义的全局函数,则应直接调用它(例如。'ticket_hash' => randomString(10),

对于它的价值,对于这样的随机字符串,最好使用Laravel框架的Str类,因为它可能更多稳定,绝对是更广泛使用。

在这种情况下,Str::random()方法可以实现您正在寻找的输出。

答案 1 :(得分:0)

列ticket_hash是一个整数类型,将其更改为varchar,现在可以正常工作。