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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 15
nfangxu

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

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

直接用时间戳就完事儿

2个月前 评论
芝麻开门 (楼主) 2个月前

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

2个月前 评论
芝麻开门 (楼主) 2个月前

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

2个月前 评论
芝麻开门 (楼主) 2个月前

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

2个月前 评论

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

2个月前 评论
芝麻开门 (楼主) 2个月前

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

2个月前 评论
芝麻开门 (楼主) 2个月前

使用redis incr 完美满足!

2个月前 评论
Aliliin 2个月前
芝麻开门 (楼主) 2个月前

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

2个月前 评论
LiamHao 2个月前
芝麻开门 (作者) (楼主) 2个月前
never_stop 2个月前
芝麻开门 (作者) (楼主) 2个月前
xingkong12138 2个月前
芝麻开门 (作者) (楼主) 2个月前

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

缓存系统 - 递增与递减值

file

2个月前 评论
芝麻开门 (楼主) 2个月前
never_stop

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

2个月前 评论
芝麻开门 (楼主) 2个月前
Complicated

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

2个月前 评论
芝麻开门 (楼主) 2个月前
Complicated (作者) 2个月前

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

2个月前 评论
芝麻开门 (楼主) 2个月前

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

2个月前 评论

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

2个月前 评论

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