HouseRankItemDto.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Module\Farm\Dtos;
  3. use App\Module\Farm\Models\FarmUser;
  4. use App\Module\User\Models\User;
  5. /**
  6. * 房屋排行榜项目数据传输对象
  7. */
  8. class HouseRankItemDto
  9. {
  10. /**
  11. * 排名
  12. * @var int
  13. */
  14. public int $rank = 0;
  15. /**
  16. * 房屋等级
  17. * @var int
  18. */
  19. public int $level = 0;
  20. /**
  21. * 用户ID
  22. * @var int
  23. */
  24. public int $userId = 0;
  25. /**
  26. * 用户昵称
  27. * @var string
  28. */
  29. public string $nickname = '';
  30. /**
  31. * 第几届/赛季
  32. * @var int
  33. */
  34. public int $reason = 1;
  35. /**
  36. * 构造函数
  37. *
  38. * @param int $rank 排名
  39. * @param int $level 房屋等级
  40. * @param int $userId 用户ID
  41. * @param string $nickname 用户昵称
  42. * @param int $reason 赛季
  43. */
  44. public function __construct(int $rank = 0, int $level = 0, int $userId = 0, string $nickname = '', int $reason = 1)
  45. {
  46. $this->rank = $rank;
  47. $this->level = $level;
  48. $this->userId = $userId;
  49. $this->nickname = $nickname;
  50. $this->reason = $reason;
  51. }
  52. /**
  53. * 从数据库查询结果创建DTO
  54. *
  55. * @param array $data 数据库查询结果
  56. * @param int $rank 排名
  57. * @return static
  58. */
  59. public static function fromArray(array $data, int $rank): static
  60. {
  61. return new static(
  62. rank: $rank,
  63. level: $data['house_level'] ?? 0,
  64. userId: $data['user_id'] ?? 0,
  65. nickname: $data['nickname'] ?? '',
  66. reason: 1
  67. );
  68. }
  69. }