根据id值,自动生成编号、编码等

sadwind2022-06-13笔记425

某项目在新增数据时,需要一个编码如:XXXX0001 格式。设想每次添加时,根据id的最大值加1,然后拼接成此形式的字符。

当时这方法不是太好,只是一个思路,因为如果多人同时添加,会造成该字段重复。

一,获取id最大值,以id 倒序排序最一条记录,即得到当前表最大id值,然后给它+1:

$formData = $this->modelClass->order('id', 'desc')->find();
$maxid = $formData['id'] +1;

二,拼接"XXXX"+maxid成XXXX0001,要用到str_pad()函数,用法如下:

str_pad(string,length,pad_string,pad_type) 
//参数    描述 
string      //必需。规定要填充的字符串。
length      //必需。规定新的字符串长度。如果该值小于字符串的原始长度,则不进行任何操作。
pad_string  //可选。规定供填充使用的字符串。默认是空白。 
pad_type    //可选。规定填充字符串的哪边。 
//可能的值:
STR_PAD_BOTH - //填充字符串的两侧。如果不是偶数,则右侧获得额外的填充。 
STR_PAD_LEFT - //填充字符串的左侧。
STR_PAD_RIGHT - //填充字符串的右侧。默认。
//拼接这样写:
$code = 'XXXX'.str_pad($maxid ,4,"0",STR_PAD_LEFT);
//如id的最大值为1,则$code 值:XXXX0002


relate content

宝塔面板/NGINX 部署TP6/FUNADMIN出现的问题

都是在本地开发、调试好,上传到服务器上,也建了同名的数据库,但是访问出现一系列问题:1,提示数据库没有权限:如这样的错误:SQLSTATE[HY000] [1044] Access denied fo...

VUE学习:十二.性能优化

前言总结一些项目开发中常见的优化技巧,优化的目的不仅能使代码结构更加清晰,加快开发编译速度,而且也能提高线上代码的性能#1.懒加载#2.dllplugin#3.整合模块多页应用中入口文件相同的配置需要...

MYSQL 数据库记录删除后 ID不连续 如何恢复

在数据库维护过程中,不免会删除一些记录一般主键ID都是自增字段,不可编辑,删除就是删除了,这个字段值再也不会出现了。因此产生两个问题,一是有些项目数据库超大,增删又频繁,是可能ID数量不够用的。二就是...

VUE学习:十.编码技巧

前言总结一些开发中常见的问题,优化改善编码技巧,提高代码质量#1.条件判断常见条件判断iflet name = "case1"if (nam...

ICMS 标签 调节器

模板标签调节器允许在任何以 $ 开头的标签中使用调节器对得到的值进行处理,形式为:modifiers调节器可带参数 参数可以是模板自带调节器,也可以是PHP的函数<!--{$...

C#全局键盘监听(Hook)的使用

一.为什么需要全局键盘监听?在某些情况下应用程序需要实现快捷键执行特定功能,例如大家熟知的QQ截图功能Ctrl+Alt+A快捷键,只要QQ程序在运行(无论是拥有焦点还是处于后台运行状态),都可以按下快...

Post Reply    

◎Welcome to participate in the discussion.