在项目中(在codeigniter中)我正在工作,用户可以创建任务并将其重复模式设置为(一次/每日/每周),其中
每日 - 任务将在每天的同一时间出现
每周 - 任务将在每个星期一出现(例如,如果星期一正在添加任务)
一旦 - 任务只会在今天添加
现在,用户创建的每个任务都在数据库中创建一条记录,
例如,假设今天(13-01-2014)从2:00-3:00创建一个任务,重复模式为Daily
,这将创建一个针对此(13-01-2014)
日期的记录但我不能在以后的所有日期添加相同的任务。
此外,用户可以随时更改/编辑任务模式,之后不再重复。
任何人都可以向我解释这种重复模式的工作原理吗?我的意思是实际为未来日期创建任务,或者如何在数据库中保持相同。
答案 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
作为其键使用最适合您需求的,或自己制作一个。
我刚刚编造了taskId
和batchId
。替换那些对你有意义的东西。