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,但是还是要考虑碰撞概率问题,毕竟主键撞一下还是爽歪歪的。

访问 Nginx 二级目录中的 Laravel 项目

这个问题折腾了挺久时间都没成功,尝试了定义root path,也尝试了proxy_pass都不行。直到看到一篇文章,介绍的是目录伪静态转发才搞定…… 根目录为 /,laravel项目放在 aaa 下,目的是需要通过局域网IP访问laravel项目,如果不做转发,可以访问首页,但是子页面无法访问,因为没有配置rewrite。 以下是转发代码: location /aaa/public/ { if (!-e $request_filename){ rewrite ^/aaa/public/(.*)$ /aaa/public/index.php?s=$1 last; } } 参考:linux 下 nginx 二级目录中访问Laravel项目