gpt4 book ai didi

Laravel Carbon - 计算数据库条目之间的时间

转载 作者:行者123 更新时间:2023-12-02 02:59:09 24 4
gpt4 key购买 nike

我正在尝试计算两个日期时间之间的差异。

我有两个模型,taskstask_interactions,它们是这样相关的:tasks 有很多 task_interactions , 而 task_interactions 属于 tasks

用户可以将任务的状态更改为以下之一:“进行中”、“暂停”和“已完成”。用户在“进行中”和“暂停”之间多次更改状态,但一旦完成,用户就无法再更改任务状态。

所有交互都保存在 task_interactions 表中,created_by 为 user_id,created_at 为日期时间。该表有这些列: id ;任务编号;状态 ;注释 ;由...制作 ;创建于

这是任务 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 ProgressPaused 之间的时间。 PausedIn Progress 之间的时间不相关。

我正在为此苦苦挣扎。有没有人可以帮助我?

提前致谢。

还有一件事,我不是很有经验,如果我的问题听起来有点傻,请原谅,我相信我应该在所有 task_interactions 中做一个 @foreach 循环,其中 task_id = X,并且这就是我所知道的。

根据要求,这是我为 View 传递的数据:

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

我真的不知道该怎么做

最佳答案

我会推荐大卫的回答。如果您不习惯使用 MySQL 进行操作。您可能必须这样做:

计算任务第一次开始和暂停的时间差:

$start = Carbon::parse($startTask->created_at);
$pause = Carbon::parse($endTask->created_at);

$diffInSeconds = $pause->diffInSeconds($start)

这应该为您提供任务开始和暂停的总时间差(以秒为单位)。现在,您必须在任务再次启动和暂停时重复此方法。

关于Laravel Carbon - 计算数据库条目之间的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47471897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com