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

标签 php laravel laravel-4 eloquent

对于我的 users 表,Eloquent 让我使用 idincrement:

$table->increments('id');

这样就好了。每个新用户都将获得他们的 id、1、2、3 等。

然而,id 应该是一个自动分配的字符串或整数。

我要

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

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

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

$table->string('id', 36)->primary()

最佳答案

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

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

$user = User::create($data);

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

public $incrementing = false;

不要忘记将用户表中的列类型从 INT 更改为 VARCHAR。

关于php - Eloquent - 使用唯一的字符串或唯一的 int 作为 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22066083/

相关文章:

php - 如何在mysql中使用 ".="将mysql查询连接成单个查询

php - 针对不同实体的 Symfony 一个 Action

Laravel,从 JSON 中删除空的 Eloquent 对象属性

http - 使用CORS从Dart应用程序发布到laravel 4 API时出错

php - Laravel 4 急切加载 "Undefined Property"

php - Laravel PUT 路由结果为 404

php - Jquery/Ajax .load() 随机不工作?

php - 在php中设置时间为00 :00:00

laravel - 使用 Laravel Echo 加入 channel 时,如何判断身份验证失败?

php - laravel 自定义异常处理