laravel使用uuid来定义主键ID

今天在使用laravel框架的时候遇到一个坑.laravel默认的主键id是自增的整型数字,而在数据量大的情况下使用整型数字会出问题,所以我决定使用uuid来做为主键id.这样做之后遇到的一个问题就是在通过模型create方法添加数据后会返回一个模型实例,而模型实例返回回来的主键ID值始终为0,打印整个模型实例发现是int型,而在设计表的时候我把id设置成的是string类型,找到框架源码的Model类发现里面有一个属性$incrementing的值是true,而protected $keyType = 'int'; 主键的key类型是int,修改模型的$incrementingfalse,即可解决返回始终为0的问题.

在laravel中使用uuid来生成uuid的方法

  1. 下载uuid扩展包
composer require webpatser/laravel-uuid
  1. 修改config/app.php配置文件,在aliases处添加下面的代码
'UUID' => Webpatser\Uuid\Uuid::class,
  1. 生成uuid的方法
UUID::generate()

综上所述,如果想修改主键id为string类型的uuid,并在添加成功后的模型中返回正确的值,需要把自增的属性$incrementing设置为false.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文链接 必备品 文档:Documentation API:API Reference 视频:Laracasts ...
    layjoy阅读 8,627评论 0 121
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,677评论 0 4
  • Eloquent: 起步 简介 Laravel 的 Eloquent ORM 提供了一种漂亮简洁的关系映射的模型来...
    Dearmadman阅读 12,025评论 3 16
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,217评论 30 472
  • 今日作业 执行顺利,但意思没有完全搞明白。太晚了,明天继续解决剩下的存疑问题。 还有一个疑问,几个同学的作业中...
    蜗牛0718阅读 277评论 1 0