'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); } }