编者注:本文已获原创加分,请作者继续努力!
最近使用Yii做东西。Mysql数据表使用了自增ID,这样用起来很方便,但也有一个我不希望出现的现象:假设有10条记录,1,2,3,4,5,6,7,8,9,10, 从1到9这9条记录删除了。以后再插入记录时,因为是自增ID,新的ID号就是11了,前面产生了很多空余的可用ID。
所以只能自己写代码来解决这个问题,应该算是比较笨的方法,但是我的目的达到了,处理思路如下:
(1)首先对表的记录数进行判断,如果记录为0,说明是空表,则最小可用ID为1;
(2)检索出表的最大ID号,假设这个值是$no,把1到$no之间这个序列进行遍历,如果其中的一个值在数据表中没有记录,那么这个值就是最小可用ID,跳出循环;
(3)如果1到$no之间没有最小可用ID,则最小可用ID为$no+1;
示例代码如下:
//$no为可用ID号 $model = new Message(); if ($model->count() == 0) { $no = 1; } else { $connection = Yii::app()->db; $sql = "select max(id) from {{Message}}"; $command = $connection->createCommand($sql); $result = $command->queryAll(); foreach ($result[0] as $key => $val) { $no = $val; } $no = (int) ($no); if ($no == 1) { $no = 2; } else { for ($i = 1; $i < $no; $i++) { $info = $model->findByPk($i); if (count($info) == 0) { $no = $i; break; } else { $no = $no + 1; } } } } //后续代码,省略
URL: http://www.bianceng.cn/webkf/PHP/201612/50470.htm
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索代码
, connection
, model
, 数据表
, no
, php获取最大的id值
, yii实现model默认值
, Yii删除
最小
yii2 获取登录用户id、yii2 获取session id、yii2 save 获取id、yii2 获取insert id、yii2 获取最后一个id,以便于您获取更多的相关知识。