'integer',
'cool_down' => 'integer',
'min_level' => 'integer',
'created_at' => 'datetime',
'updated_at' => 'datetime',
];
/**
* 获取技能的使用记录
*
* @return HasMany
*/
public function usageLogs(): HasMany
{
return $this->hasMany(PetSkillLog::class, 'skill_id');
}
/**
* 格式化持续时间显示
*
* @param int $seconds 秒数
* @return string 友好的时间显示
*/
public static function formatDuration(int $seconds): string
{
if ($seconds <= 0) {
return '无持续时间';
}
$days = floor($seconds / 86400);
$hours = floor(($seconds % 86400) / 3600);
$minutes = floor(($seconds % 3600) / 60);
$remainingSeconds = $seconds % 60;
$parts = [];
if ($days > 0) {
$parts[] = "{$days}天";
}
if ($hours > 0) {
$parts[] = "{$hours}小时";
}
if ($minutes > 0) {
$parts[] = "{$minutes}分钟";
}
if ($remainingSeconds > 0 && empty($parts)) {
// 只有在没有更大单位时才显示秒数
$parts[] = "{$remainingSeconds}秒";
}
if (empty($parts)) {
return '瞬间';
}
$result = implode(' ', $parts);
// 添加原始秒数的提示
$result .= "
({$seconds}秒)";
return $result;
}
/**
* 获取格式化的持续时间
*
* @return string
*/
public function getFormattedDurationTimeAttribute(): string
{
return self::formatDuration($this->duration_time);
}
/**
* 获取格式化的冷却时间
*
* @return string
*/
public function getFormattedCoolDownAttribute(): string
{
return self::formatDuration($this->cool_down);
}
}