PetSkill.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Module\Pet\Models;
  3. use UCore\ModelCore;
  4. use App\Module\Pet\Enums\PetStatus;
  5. use Illuminate\Database\Eloquent\Relations\HasMany;
  6. /**
  7. * 宠物技能模型
  8. *
  9. * field start
  10. * @property int $id
  11. * @property string $skill_name 技能名称
  12. * @property int $stamina_cost 体力消耗
  13. * @property int $cool_down 冷却时间(秒)
  14. * @property string $effect_desc 效果描述
  15. * @property int $min_level 最低等级要求
  16. * @property \Carbon\Carbon $created_at
  17. * @property \Carbon\Carbon $updated_at
  18. * field end
  19. */
  20. class PetSkill extends ModelCore
  21. {
  22. /**
  23. * 与模型关联的表名
  24. *
  25. * @var string
  26. */
  27. protected $table = 'pet_skills';
  28. /**
  29. * 可批量赋值的属性
  30. *
  31. * @var array
  32. */
  33. // attrlist start
  34. protected $fillable = [
  35. 'id',
  36. 'skill_name',
  37. 'stamina_cost',
  38. 'cool_down',
  39. 'effect_desc',
  40. 'min_level',
  41. ];
  42. // attrlist end
  43. /**
  44. * 属性类型转换
  45. *
  46. * @var array
  47. */
  48. protected $casts = [
  49. 'stamina_cost' => 'integer',
  50. 'cool_down' => 'integer',
  51. 'min_level' => 'integer',
  52. 'created_at' => 'datetime',
  53. 'updated_at' => 'datetime',
  54. ];
  55. /**
  56. * 获取技能的使用记录
  57. *
  58. * @return HasMany
  59. */
  60. public function usageLogs(): HasMany
  61. {
  62. return $this->hasMany(PetSkillLog::class, 'skill_id');
  63. }
  64. /**
  65. * 获取可以使用此技能的宠物
  66. *
  67. * @return \Illuminate\Database\Eloquent\Builder
  68. */
  69. public function eligiblePets()
  70. {
  71. return Pet::where('level', '>=', $this->min_level)
  72. ->where('status', PetStatus::NORMAL)
  73. ->where('stamina', '>=', $this->stamina_cost);
  74. }
  75. }