【发布时间】:2022-01-03 16:18:49
【问题描述】:
我有关于时间表的项目,我有任务表和计时器表,每个任务都有很多计时器,计时器属于任务。
我在 getTotalAttribute 中计算了 start_at 和 end_at 计时器之间的时间,我得到了它们之间的时间差。
定时器模型
class TsTimer extends Model
{
use HasFactory;
public $appends = ['total'];
public $casts = [
'start' => 'datetime',
'end' => 'datetime',
];
public function task(){
return $this->belongsTo(TsTask::class);
}
public function user(){
return $this->belongsTo(User::class);
}
public function getTotalAttribute(){
// calclute the difference between two time start and end in mints.
if($this->end){
return $this->start->diffInMinutes($this->end);
}
return 0;
}
任务模型
class TsTask extends Model
{
use HasFactory;
public $appends = ['total', 'timer_total'];
public function project(){
return $this->belongsTo(TsProject::class);
}
public function timers(){
return $this->hasMany(TsTimer::class,'task_id');
}
public function getTotalAttribute(){
$format=$this->timers->sum('total');
return date('i:s',$format);
}
现在我需要计算这些计时器的总时间,例如第一个计时器(4 小时 - 10 分钟),第二个计时器(1 小时),总时间为 5:10。
所以我需要计算这个总数,请任何帮助或建议,我不知道如何计算它。
提前致谢
这里是关于应用程序的照片:
【问题讨论】:
-
什么确切不起作用?您尝试过什么来解决问题?也许使用
DateTime或在整个应用程序中以秒为单位的差异而不是将其转换为介于两者之间的格式化字符串更容易? -
@NicoHaase 代码有效,但我需要计算所有计时器的总时间,正如您在应用程序概览图片末尾看到的那样,我需要如何计算它的建议。
-
你尝试过什么?你被困在哪里了?当您总结所有计时器时,究竟是什么不起作用?
-
@NicoHaase 实际上,我需要一种方法或想法来总结所有计时器,这就是我所要问的。