重复模式的概念是如何工作的

时间:2014-01-13 06:25:58

标签: php mysql codeigniter logic repeat

在项目中(在codeigniter中)我正在工作,用户可以创建任务并将其重复模式设置为(一次/每日/每周),其中
每日 - 任务将在每天的同一时间出现 每周 - 任务将在每个星期一出现(例如,如果星期一正在添加任务) 一旦 - 任务只会在今天添加

现在,用户创建的每个任务都在数据库中创建一条记录,

例如,假设今天(13-01-2014)从2:00-3:00创建一个任务,重复模式为Daily,这将创建一个针对此(13-01-2014)日期的记录但我不能在以后的所有日期添加相同的任务。

此外,用户可以随时更改/编辑任务模式,之后不再重复。

任何人都可以向我解释这种重复模式的工作原理吗?我的意思是实际为未来日期创建任务,或者如何在数据库中保持相同。

1 个答案:

答案 0 :(得分:0)

“解释重复模式”的概念是一个非常模糊的请求。但是,我想我明白缺少什么。

我假设您有某种taskId,这是每项任务的唯一键。你需要的是batchId。你的最终结果看起来像这样:

+----------+----------+----------------------+
|taskId    |batchId   |description           |
|----------|----------|----------------------|
|        1 |          | Some meeting         |
|        2 |          | Another meeting      |
|        3 |       1  | Daily meeting        |
|        4 |       1  | Daily meeting        |
|        5 |       1  | Daily meeting        |
|        6 |       2  | Go to the gym!       |
|        7 |       2  | Go to the gym!       |
|        8 |       2  | Go to the gym!       |
|        9 |       2  | Go to the gym!       |
|       10 |          | Yet another meeting  |
+----------+----------+----------------------+

拥有batchId可让您在需要一次修改所有任务的情况下对这些事件进行分组,但仍然允许您根据需要单独修改每个任务,这要归功于taskId。< / p>


batchId的实际实施取决于您。例如,它可以是:

  • 即时生成的随机字符串
  • 第一个taskId的哈希,以确保它们始终是唯一的
  • 自动生成batchId作为其键
  • 的单独表中的外键

使用最适合您需求的,或自己制作一个。


我刚刚编造了taskIdbatchId。替换那些对你有意义的东西。