我正在尝试计算两个日期时间之间的差异。
我有两个模型,tasks
和task_interactions
,它们的关系如下:tasks
包含多个task_interactions
,而task_interactions
属于tasks
。
用户可以将任务状态更改为以下之一:“进行中”,“已暂停”和“已完成”。用户在“进行中”和“已暂停”之间多次更改状态,但一旦完成,用户就无法再更改任务状态。
所有交互都保存在task_interactions
表中,其中created_by
为user_id,created_at
为日期时间。该表具有以下列:id; task_id; status; comments; created_by; created_at
。
这是任务ID = 1的示例:
# id, task_id, status, comments, created_by, created_at
144, 1, In Progress, , 1, 2017-11-14 09:42:20
145, 1, Paused, , 1, 2017-11-14 09:45:53
146, 1, In Progress, , 1, 2017-11-14 09:46:57
147, 1, Paused, , 1, 2017-11-14 09:49:57
148, 1, In Progress, , 1, 2017-11-14 10:00:10
149, 1, Paused, , 1, 2017-11-14 10:06:25
150, 1, In Progress, , 1, 2017-11-14 10:07:26
151, 1, Paused, , 1, 2017-11-14 10:08:11
153, 1, Paused, , 1, 2017-11-14 11:27:04
154, 1, In Progress, , 1, 2017-11-14 11:27:21
155, 1, Paused, , 1, 2017-11-14 11:57:38
事实上,我需要确定在一个任务中花费的总时间,需要确定
In Progress
和Paused
之间的时间。而Paused
和In Progress
之间的时间并不重要。我正在苦恼这个问题。有人可以帮助我吗?
提前感谢。
还有一件事,我经验不太丰富,所以如果我的问题听起来有点愚蠢,请原谅。我认为我应该通过一个
@foreach
循环遍历所有task_interactions(其中task_id = X),这就是我所知道的。如所请求,这里是我传递给视图的数据:
public function mytasks()
{
$users = User::all();
$mytasks = Task::where('assigned_to','=', Auth::id())->where('status','!=','Finished')->get();
$mytaskscount = Task::where('assigned_to','=', Auth::id())->count();
$tasksinprogress = Task::where('status','=','In Progress')->where('assigned_to','=', Auth::id())->get();
$tasksinprogresscount = Task::where('status','=','In Progress')->where('assigned_to','=', Auth::id())->count();
$taskspaused = Task::where('status','=','Paused')->where('assigned_to','=', Auth::id())->get();
$taskspausedcount = Task::where('status','=','Paused')->where('assigned_to','=', Auth::id())->count();
$tasksfinished = Task::where('status','=','Finished')->where('assigned_to','=', Auth::id())->get();
$tasksfinishedcount = Task::where('status','=','Finished')->where('assigned_to','=', Auth::id())->count();
$tasktypes = Tasktype::all();
$chapters = Chapter::all();
return view('pages.tasks_my', compact('mytasks','tasktypes','chapters','tasksinprogress','taskspaused','tasksfinished','mytaskscount','tasksinprogresscount','taskspausedcount','tasksfinishedcount'));
}
还有一件事,就是我目前所知道的
@foreach ($tasks as $task)
@foreach ($task->interactions as $interactions)
{{ In here, every time my loop returns a status = "In progress" i should mark that time, and if that the next loop returns a "Paused", i should count the difference between these two. And sum all other equal cases in the loop. }}
@endforeach
@endforeach
我真的不知道如何做到这一点