美文网首页
laravel使用uuid来定义主键ID

laravel使用uuid来定义主键ID

作者: 罗盘上的方向 | 来源:发表于2017-02-15 00:25 被阅读2042次

今天在使用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.

相关文章

  • laravel使用uuid来定义主键ID

    今天在使用laravel框架的时候遇到一个坑.laravel默认的主键id是自增的整型数字,而在数据量大的情况下使...

  • MySQL面试题 | 附答案解析(十七)

    接上篇!!! 9. 主键使用自增ID还是UUID? 推荐使用自增ID,不要使用UUID。 因为在InnoDB存储引...

  • laravel中Uuid的使用和密码加盐

    Uuid uuid是唯一的id,不用像id一样使用自增,也不用添加主键因,为它就是唯一,而且它的数值也非常大,号称...

  • JPA自定义主键生成策略

    通常我们表的主键要么自增,要么使用uuid,插入数据库的时候是不需要手动来指定的,插入后会自动生成ID,但有些时候...

  • JAVA中JPA的主键自增长注解设置

    JPA的注解来定义实体的时候,使用@Id来注解主键属性即可。如果数据库主键是自增长的,需要在增加一个注解@Gene...

  • 温故知新-MYSQL-一些查询技巧

    查询表里的重复值: 查询两个表里的差异值: UUID()和自增INT主键的对比 优点 使用UUID作为主键[htt...

  • .NET的snowflake

    一般情况下,我们是使用自增长ID来做主键ID的。也有些哥们,是使用GUID来作为主键ID(本人并不建议采用GUID...

  • 使用python/java生成uuid

    前言 在工作中经常会遇到使用32位的uuid作为数据库中的主键id情况,这里记录一下分别使用python和java...

  • 紧凑UUID

    UUID经常被用在产生全局唯一性ID/主键的场合,在java/kotlin中生成它们也很方便。UUID字符串编码为...

  • mysql 自增id作为主键 策略

    首先需要明确,自增id用完之后插入数据会报主键冲突。一般情况我们使用bigint unsigned 来设置主键id...

网友评论

      本文标题:laravel使用uuid来定义主键ID

      本文链接:https://www.haomeiwen.com/subject/wabfwttx.html