在Laravel 5中创建一个UID,如何增强它以降低碰撞概率?

时间:2017-03-09 10:25:33

标签: php laravel laravel-5 laravel-5.4

目前,我正在为名为randomId的控制器方法内的数据创建UID。我已经粘贴了以下整个方法:

public static function randomId()
{

    $id = str_random(12);

    $validator = Validator::make(
        ['calculation_uid'=>$id],
        ['calculation_uid'=>'unique:calculations,calculation_uid']
    );

    if ($validator->fails()) {
        $this->randomId();
    }

    return strtoupper($id);
}

基本上生成一个12位数的字母数字代码,然后通过验证器运行以确保它不存在;如果确实存在,则再次运行该方法。

我知道我可以通过将它增加到16个字符来减少碰撞的概率,但是如果我达到极限,我将永远增加它。

我有没有办法(缺乏更好的措辞)使这更独特?或者我的实施可能还可以吗?

0 个答案:

没有答案