php - Laravel 5.1 - 在保存到数据库时生成唯一的 10 个字母数字字符代码

标签 php laravel laravel-5.1 uniqueidentifier

我正在使用 Laravel 5.1 并将壁虎保存到数据库中。我的 store 方法代码如下:

public function store(GeckoRequest $request)
{
    $user_id = Auth::user()->id;
    $input = $request->all();

    $input['genetics'] = json_encode($input['genetics'], JSON_FORCE_OBJECT);
    $input['user_id'] = $user_id;

    Gecko::create($input);

    $name = str_replace(' ', '-', $request['name']);

    flash()->success('Success!', 'Your gecko has been added to the system');
    return redirect()->action('GeckoController@show', [$name]);

}

我知道我可以做 $input['uid'] = str_random(10); - 但我如何确保它实际上是唯一的并且不会如果它不是唯一的,是否重定向回我的表单?

是否有适当的做法来实现这样的目标?

最佳答案

创建一个生成 10 位随 secret 钥的函数,然后将其传递给具有唯一规则集的验证器。如果验证器给你一个错误,重新运行相同的函数来生成一个新的

public function randomId(){

     $id = \Str::random(10);

     $validator = \Validator::make(['id'=>$id],['id'=>'unique:table,col']);

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

     return $id;
}

关于php - Laravel 5.1 - 在保存到数据库时生成唯一的 10 个字母数字字符代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35083940/

相关文章:

php - Symfony2 : How to disable profiler entirely?

PHP/MySQL - 在适当的工作日安排约会

php - 如果 Post 值不为空则更新数据库

laravel - 在 Laravel 之外使用 Laravel 4 中的 Eloquent ORM

php - 如何阻止 Laravel 在页面刷新时将数据插入数据库?

php - 从特定的 where 子句中获取最高的 id

php - 这种处理PHP错误的方法是否有任何 "gotchas"?

css - 如何向 Laravel 4 Forms 添加类

php - 如何使用 Laravel 5.1 执行原始查询?

PHP artisan 返回未定义索引 : HTTP_USER_AGENT