0

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

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

提前致谢!

4

1 回答 1

0

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

创建一个模型TaskTimeTrack

  • 用户身份
  • task_id
  • 开始时间
  • 时间结束

然后在您的控制器中,您可能应该有一个方法startstop

在您的start方法中,检查您是否有用户的 TaskTimeTrack 记录以及任务和结束时间是否为空;如果是这样,他应该无法开始新的跟踪,因为他仍在进行主动跟踪;只需返回现有的 TaskTimeTrack (如果你想返回任何东西)如果你没有找到这样的记录,那就创建一个新的。

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

您没有理由只想限制每个用户/任务 1 条记录。您只需通过 sum(endtime - starttime) 计算特定用户或任务或两者组合的所有 TaskTimeTRack 的总时间。

于 2018-01-30T19:58:17.997 回答