Eloquent - 使用唯一字符串或唯一int作为id

Shl*_*omo 4 php laravel eloquent laravel-4

对于我的users表,雄辩让我用一个idincrement:

$table->increments('id');
Run Code Online (Sandbox Code Playgroud)

那很好.每个新用户都会得到他们的id,1,2,3等.

但是,id应该是自动分配的字符串或整数.

我想要

  • 用户不知道有多少用户
  • 用户ID是至少5位(47533),或者是一个唯一的随机字符串(f8hrcrft13)

如何使用Eloquent实现这一目标?

到目前为止我发现了什么:

$table->string('id', 36)->primary()
Run Code Online (Sandbox Code Playgroud)

And*_*yco 5

您可以在创建用户模型时分配ID.

$data = [
    'id' => str_random(10),
    'first_name' => 'Andrej'
];

$user = User::create($data);
Run Code Online (Sandbox Code Playgroud)

但是,这将忽略您默认指定的ID.
您需要编辑models/User.php一下并告诉您不要自动递增.
在顶部添加此属性

public $incrementing = false;
Run Code Online (Sandbox Code Playgroud)

不要忘记将users表中的列类型从INT更改为VARCHAR.