'integer',
'exp_required' => 'integer',
'skills' => 'array',
'display_attributes' => DisplayAttributesCast::class,
'numeric_attributes' => NumericAttributesCast::class,
];
/**
* 获取关联的宠物
*
* @return BelongsTo
*/
public function pet(): BelongsTo
{
return $this->belongsTo(PetUser::class, 'pet_id');
}
/**
* 获取该等级可用的技能
*
* 通过 skills 字段中存储的技能ID数组关联到 PetSkill 模型
*
* @return \Illuminate\Database\Eloquent\Collection
*/
public function getAvailableSkills()
{
if (empty($this->skills)) {
return collect();
}
return PetSkill::whereIn('id', $this->skills)->get();
}
/**
* 获取技能列表的访问器(带链接)
*
* @return string
*/
public function getSkillsListAttribute()
{
$skills = $this->getAvailableSkills();
if ($skills->isEmpty()) {
return '无可用技能';
}
$skillLinks = [];
foreach ($skills as $skill) {
// 生成技能详情页面的链接
$detailUrl = admin_url("pet-skills/{$skill->id}");
$skillLinks[] = "" .
" {$skill->skill_name}";
}
return implode(' ', $skillLinks);
}
/**
* 检查指定技能是否在该等级可用
*
* @param int $skillId 技能ID
* @return bool
*/
public function hasSkill(int $skillId): bool
{
return !empty($this->skills) && in_array($skillId, $this->skills);
}
}