gpt4 book ai didi

php - 在数据库中添加序列号,每年重置

转载 作者:行者123 更新时间:2023-11-29 19:01:16 24 4
gpt4 key购买 nike

我正在使用 Codeigniter + MySQL + Active Record 构建一个项目。

在我的 MySQL 数据库中,我有一个名为 Requests 的表,其中包含列 protocolyear 和其他一些列我在其中存储请求的一般信息(如标题、主题等),没有什么特别值得一提的。

协议(protocol)和年份是TYPE INT并且必须像下面一样自动生成。

每年,在 01/01/XXXX-00:00:00protocol 字段必须重置为数字 1(在 01 之后保存的第一个请求/01/XXXX,必须具有协议(protocol)值 1),对于即将到来的请求,将其依次增加 1,直到明年,依此类推。

为了重置协议(protocol),我将在稍后阶段添加一个 cron,其中我将使用一个技巧来重置。还是不知道怎么办。

What i need to do now:

每当我添加新的请求时,新行的协议(protocol)必须增加1。

伪代码:

new_protocol = previous_protocol + 1

What i am doing so far

我的模型中有一个插入新请求的函数,但到目前为止我对协议(protocol)号没有做任何事情,我通过表单手动输入它。

public function addRequest($request) {
$this->db->insert('requests', $request);
if ($this->db->affected_rows() == 1)
return $this->db->insert_id();
return FALSE;
}

实现这一目标最有效的方法是什么?

  1. 我应该在 Controller 中找到最后一个协议(protocol)编号 -> 添加 1 -> 发送到模型进行添加吗?
  2. 我应该在模型中找到 LAST 和 MAX protocol 编号 -> 添加 1 -> 插入到数据库吗?
  3. 还有别的事吗?

任何想法将不胜感激。

最佳答案

我会这样处理:

  1. 在表格中添加列 ID 并将其设置为自动递增
  2. php - 设置要使用的默认时区(自 PHP 5.1 起):date_default_timezone_set('UTC');
  3. php - 获取当前年份:$cyear=date("Y");
  4. 获取行 max(ID) 并比较存储的年份与 $cyear 相比是否已更改

如果它已更改并遵循您的伪代码示例:

new_protocol = 1

否则

new_protocol = previous_protocol + 1

关于php - 在数据库中添加序列号,每年重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43864559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com