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

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

什么时候开始都不晚,学到老
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 15
nfangxu

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

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

直接用时间戳就完事儿

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

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

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

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

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

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

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

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