Laravel 使用 UUID 作为用户表主键并使用自定义用户表字段

最近在用 Laravel 5.6 做一个项目,涉及到用户表的自定义字段和 UUID 作为主键,各种 Google 花了我很长时间,所以本篇文章用来记录一下实现思路,以防后人踩坑。 Schema 用 php artisan make:auth 出来的用户表使用的自增的 id 作为主键,验证时使用 email 字段作为用户的 “登录名”,然而我并不希望使用一个自增的 id,而是使用 UUID 作为用户主键,user_email 作为 “登录名”,user_password 作为保存的密码。 UUID What’s UUID 对于刚入学时候的萌新开发者来说设计出来的啥数据表都是一个自增 id 主键,根本就不知道 UUID,现在使用上了 UUID 就顺便科普一下啥是 UUID 以及用它有什么好处。 UUID 全称是 Universally Unique Identifier,是一个 128 位的标识符,对外显示是使用 32 位 16 进制的 8-4-4-4-12 位数形式,类似:123e4567-e89b-12d3-a456-426655440000,有一个在线生成 UUID 的网站 Online UUID Generator ,读者有兴趣不妨去玩玩~ 一般而言主流使用的是 Version 1 和 Version 4 的 UUID,前者使用电脑硬件 MAC 地址,时间戳作为种子,而后者则是完全随机的一个生成过程。 UUID Collision 既然使用 UUID 作为主键,虽然不像一个自增的 id 那样看上去那么 low,但是还是要考虑碰撞概率问题,毕竟主键撞一下还是爽歪歪的。