对于我的users
表,Eloquent允许我使用id
increment
:
$table->increments('id');
这很好。每个新用户都会获得id
,1,2,3等
但是,id应该是自动分配的字符串或整数。
我想要
如何使用Eloquent实现这一目标?
到目前为止我发现了:
$table->string('id', 36)->primary()
答案 0 :(得分:5)
您可以在创建用户模型时指定ID。
$data = [
'id' => str_random(10),
'first_name' => 'Andrej'
];
$user = User::create($data);
但是,这将忽略您默认指定的ID
您需要稍微编辑models/User.php
并告诉您不要自动递增
在顶部添加此属性
public $incrementing = false;
不要忘记将users表中的列类型从INT更改为VARCHAR。
答案 1 :(得分:4)
不要更改数据库结构,增加id对于防止错误重复非常重要。
只使用hashid hashid.org
从数字中生成短哈希值(如YouTube和Bitly)。
模糊数据库ID·将它们用作忘记密码哈希值·邀请码·存储分片号
$hashids = new Hashids\Hashids('this is my salt');
$hash = $hashids->encrypt(1, 2, 3);
$numbers = $hashids->decrypt($hash);
var_dump($hash, $numbers);
返回:
string(5) "laUqtq"
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
答案 2 :(得分:2)
使用其用户名为每个用户制作一个slu ..
example.org/user/john
然后,如果有两个用户使用 john 用户名附加一个计数器来区分它们。
example.org/user/john-1
最终用户不会看到任何ID。这比为每个用户别名分配随机数要简洁得多。
轻松完成此操作