根据id值,自动生成编号、编码等
某项目在新增数据时,需要一个编码如: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