请教大家,数据库已经有一个字段是自增ID了,另一个字段也想实现自增ID,LARAVEL怎么实现?谢谢

大家好,项目是在重构的别人遗留下来的,数据库里边的position字段已经已经是auto_increment,
现在pid字段需要是在插入数据时实现自增的,MYSQL是不能有两个自增ID的,所以请教一下大家,LARAVEL怎么实现?谢谢!

什么时候开始都不晚,学到老
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 15

能说一下你的目的,和有什么要求吗?比如,可以和主键ID一样吗?都是1 2 3 4 5 ...

3年前 评论
nfangxu

提供一个思路, 可以借助 Redis 来实现

  1. 在 Redis 里定义一个 Key 用来自增
  2. 在 model 里添加 hook, 每次新增时, 调用这个自增的 Key
  3. 保存
3年前 评论
芝麻开门 (楼主) 3年前

直接用时间戳就完事儿

3年前 评论
芝麻开门 (楼主) 3年前

一个表只能有一个自增字段,且这个字段是key(非主键也可以自增,但一定要是键)才能赋予自增属性。不想改代码的话,就只能在 MySQL 中加触发器了。

3年前 评论
芝麻开门 (楼主) 3年前

为什么不使用连表查询呢,两个自增字段分别放两个表里

3年前 评论
芝麻开门 (楼主) 3年前
sreio

@芝麻开门 帖子排序为什么不用时间排序呢?另外你可以把相关业务贴出来,让论坛的大佬帮忙想想有没有其他的实现方案

3年前 评论
芝麻开门 (楼主) 3年前

能说一下你的目的,和有什么要求吗?比如,可以和主键 ID 一样吗?都是 1 2 3 4 5 ...

3年前 评论
芝麻开门 (楼主) 3年前

使用redis incr 完美满足!

3年前 评论
Aliliin 3年前
芝麻开门 (楼主) 3年前

谢谢大家,想到一个方法了,取出pid的最后一个列的数值,加1后再写入数据库 :sweat_smile:

3年前 评论
LiamHao 3年前
芝麻开门 (作者) (楼主) 3年前
never_stop 3年前
芝麻开门 (作者) (楼主) 3年前
xingkong12138 3年前
芝麻开门 (作者) (楼主) 3年前

不用 redis的话,那用 file 做缓存。

缓存系统 - 递增与递减值

file

3年前 评论
芝麻开门 (楼主) 3年前
never_stop

提供一個辦法,insert 后返回自增 ID ,用這個 ID 加一個固定值(先定義出來),再執行 update

3年前 评论
芝麻开门 (楼主) 3年前
Complicated

看有没有并发了,没并发的话,,重写一个下 created 和 save 方法,,该字段的最大值加1就是的,,有并发的话,, file也不行,只能上redis

3年前 评论
芝麻开门 (楼主) 3年前
Complicated (作者) 3年前

提供一个想法,用 snowflake 算法生成id。如果生成的数据嫌太长,可以把时间参数调整下,减少位数。

3年前 评论
芝麻开门 (楼主) 3年前

插入数据时,查一下上一条数据是多少...加1

3年前 评论

mysql修改器,pid=id+1,id只要不重复,pid就不会重复,laravel的话就是观察者处理!

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!