私は2つのdatetimesの違いを計算しようとしています。 tasks
が多くtask_interactions
があり、task_interactions
はtasks
に属し:Laravel Carbon - データベースエントリ間の時間を計算する
私は2つのモデル、tasks
とtask_interactions
を持っているが、それらは次のように関連しています。
ユーザーは、タスクのステータスを「進行中」、「一時停止中」、「終了済み」のいずれかに変更できます。ユーザーは「進行中」と「一時停止中」の間でステータスを何度か変更しますが、終了するとタスクのステータスをもう変更できなくなります。
すべての相互作用は、をuser_id、created_at
をdatetimeとしてtask_interactions
テーブルに保存されます。テーブルのカラムはid ; task_id ; status ; comments ; created_by ; created_at
です。ここで
= 1タスクIDのexempleのNA:私は一つのタスクに費やした時間の合計を持っている事は、ある
# 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_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
を私は本当に行う方法については考えているが、その
コントローラを押し込むことはできますか? –
私はこの質問への答えを知りたいと思います – lewis4u
これを処理するためにdbクエリを担当させていただいていますか? PHPで結果を反復することは、何を思い浮かべるかです。 – Chay22