如何在数据库中存储可切换的持续时间



我想为我的Laravel应用程序的用户提供跟踪他们在不同任务上花费的时间的选项。单击"开始"按钮后,我想创建一个"跟踪"对象的新实例,该对象具有 id 和对它作为外键跟踪时间的任务的引用。另外,我想存储从创建它的那一刻开始的时间戳。稍后,用户应该通过另一个按钮单击停止跟踪。 我需要以某种方式存储跟踪的持续时间,因为我想报告什么任务有多少跟踪,所有汇总的总时间是多少,等等。一旦跟踪停止,就可以通过从停止中减去开始并将其保存到对象来计算持续时间。 但是,我希望用户能够稍后继续跟踪,以便它再次开始计数。如果我随后再次设置结束时间戳,它将计算整个持续时间,即使它可能在两者之间被禁用。

另一个想法是有一个last_started和一个total_duration列。当用户(重新)启动跟踪时,将包含时间戳。一旦他关闭它,持续时间就会添加到当前total_duration中,并且last_started再次设置为 null。这感觉像是一个肮脏的解决方法,我相信那里有更好的选择,我很想听到。

提前感谢!

你的问题对我来说有点模糊,但如果我理解正确,你只需要每个用户每个任务一个跟踪记录。 我不明白为什么你不能让它变得更容易一点。

创建模型任务时间跟踪

  • user_id
  • task_id
  • 开始时间
  • 结束时间

那么在你的控制器中,你可能应该有一个方法startstop

start方法中,检查用户是否有 TaskTimeTrack 记录,以及任务和结束时间是否为 NULL;如果是,他应该无法启动新的跟踪,因为他仍在活动跟踪中;只需返回现有的 TaskTimeTrack(如果要返回任何内容) 如果您没有找到这样的记录,只需创建一个新记录。

在您的stop方法中,只需搜索结束时间为 NULL 的用户和任务的 TaskTimeTRack,并将结束时间更新为 NOW。

您没有理由希望每个用户/任务仅限制 1 条记录。 您只需通过特定用户或任务或两者的组合的所有任务时间的总和(结束时间 - 开始时间)来计算总时间。

相关内容

  • 没有找到相关文章

最新更新