FarmHouseConfig.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace App\Module\Farm\Models;
  3. use Illuminate\Database\Eloquent\Model;
  4. use Illuminate\Database\Eloquent\Relations\BelongsTo;
  5. /**
  6. * 房屋等级配置模型
  7. * field start
  8. * @property int $id 主键ID
  9. * @property int $level 等级
  10. * @property float $output_bonus 产出加成
  11. * @property int $special_land_limit 特殊土地上限
  12. * @property int $upgrade_materials 升级所需消耗组ID,关联game_consume_groups表
  13. * @property int $downgrade_days 降级天数,NULL表示不降级
  14. * @property \Carbon\Carbon $created_at 创建时间
  15. * @property \Carbon\Carbon $updated_at 更新时间
  16. * field end
  17. *
  18. */
  19. class FarmHouseConfig extends Model
  20. {
  21. /**
  22. * 与模型关联的表名
  23. *
  24. * @var string
  25. */
  26. protected $table = 'farm_house_configs';
  27. /**
  28. * 可批量赋值的属性
  29. *
  30. * @var array
  31. */
  32. protected $fillable = [
  33. 'level',
  34. 'output_bonus',
  35. 'special_land_limit',
  36. 'upgrade_materials',
  37. 'downgrade_days',
  38. ];
  39. /**
  40. * 应该被转换为原生类型的属性
  41. *
  42. * @var array
  43. */
  44. protected $casts = [
  45. 'output_bonus' => 'float',
  46. ];
  47. /**
  48. * 获取关联的消耗组
  49. *
  50. * @return BelongsTo
  51. */
  52. public function consumeGroup(): BelongsTo
  53. {
  54. return $this->belongsTo(\App\Module\Game\Models\GameConsumeGroup::class, 'upgrade_materials', 'id');
  55. }
  56. /**
  57. * 获取升级所需材料
  58. *
  59. * @return array
  60. */
  61. public function getUpgradeMaterials(): array
  62. {
  63. // 如果有关联的消耗组,则使用消耗组服务获取材料
  64. if ($this->upgrade_materials && is_numeric($this->upgrade_materials)) {
  65. return \App\Module\Game\Services\ConsumeGroupService::getConsumeMaterials($this->upgrade_materials);
  66. }
  67. return [];
  68. }
  69. }