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

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

什么时候开始都不晚,学到老
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 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年前 评论
sreio

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

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年前 评论

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