MemberUser.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Database\Eloquent\Relations\HasMany;
  4. use Illuminate\Database\Eloquent\SoftDeletes;
  5. use Illuminate\Foundation\Auth\User as Authenticatable;
  6. use Laravel\Sanctum\HasApiTokens;
  7. class MemberUser extends Authenticatable
  8. {
  9. use HasApiTokens, SoftDeletes;
  10. protected $table = 'member_users';
  11. protected $guarded = [];
  12. /**
  13. * 隐藏字段
  14. *
  15. * @var array
  16. */
  17. protected $hidden = [
  18. 'password',
  19. ];
  20. /**
  21. * 创建用户时创建钱包
  22. *
  23. * @return void
  24. */
  25. protected static function booted()
  26. {
  27. static::created(function ($user) {
  28. $user->wallet()->create([
  29. 'owner_type' => MemberUser::class,
  30. 'owner_id' => $user->id,
  31. ]);
  32. });
  33. }
  34. /**
  35. * 获取用户的默认地址
  36. */
  37. public function address()
  38. {
  39. return $this->hasOne(MemberAddress::class, 'user_id', 'id')->where('is_default', 1);
  40. }
  41. /**
  42. * @Author FelixYin
  43. * @description 用户关联地址
  44. */
  45. public function addresses()
  46. {
  47. return $this->hasMany(MemberAddress::class, 'user_id', 'id');
  48. }
  49. /**
  50. * @Author FelixYin
  51. * @description 用户关联订单
  52. */
  53. public function orders()
  54. {
  55. return $this->hasMany(Order::class, 'user_id', 'id');
  56. }
  57. /**
  58. * @Author FelixYin
  59. * @description 用户关联社交账户
  60. */
  61. public function socialAccounts()
  62. {
  63. return $this->hasMany(MemberSocialAccount::class, 'user_id', 'id');
  64. }
  65. /**
  66. * @Author FelixYin
  67. * @description 用户关联技师身份
  68. */
  69. public function coach()
  70. {
  71. return $this->hasOne(CoachUser::class, 'user_id', 'id');
  72. }
  73. /**
  74. * @Author FelixYin
  75. * @description 用户关联评论
  76. */
  77. public function comments()
  78. {
  79. return $this->hasMany(OrderComment::class, 'user_id', 'id');
  80. }
  81. /**
  82. * @Author FelixYin
  83. * @description 用户关联钱包
  84. */
  85. public function wallet()
  86. {
  87. return $this->morphOne(Wallet::class, 'owner', 'owner_type', 'owner_id', 'id');
  88. }
  89. /**
  90. * @Author FelixYin
  91. * @description 用户关联店铺身份
  92. */
  93. public function shop()
  94. {
  95. return $this->hasOne(ShopInfo::class, 'user_id', 'id');
  96. }
  97. /**
  98. * @Author FelixYin
  99. * @description 用户关联代理商身份
  100. */
  101. public function agent()
  102. {
  103. return $this->hasOne(AgentInfo::class, 'user_id', 'id');
  104. }
  105. /**
  106. * @Author FelixYin
  107. * @description 会员所属行政区划
  108. */
  109. public function region()
  110. {
  111. return $this->belongsTo(SysRegion::class, 'register_area', 'id');
  112. }
  113. /**
  114. * @Author FelixYin
  115. * @description 用户邀请人
  116. */
  117. public function Inviter()
  118. {
  119. return $this->hasOne(MarketDistTeam::class, 'user_id', 'id');
  120. }
  121. /**
  122. * @Author FelixYin
  123. * @description 用户关联团队
  124. */
  125. public function teams()
  126. {
  127. return $this->morphMany(MarketDistTeam::class, 'object', 'object_type', 'object_id', 'id');
  128. }
  129. }