'datetime', 'expires_at' => 'datetime', 'auto_renew' => 'boolean', ]; /** * 所屬會員 */ public function member(): BelongsTo { return $this->belongsTo(Member::class); } /** * 會員等級 */ public function tier(): BelongsTo { return $this->belongsTo(MembershipTier::class, 'tier_id'); } /** * 是否有效 */ public function getIsActiveAttribute(): bool { return $this->status === 'active' && (!$this->expires_at || $this->expires_at->isFuture()); } /** * 有效會員資格 */ public function scopeActive($query) { return $query->where('status', 'active') ->where(function ($q) { $q->whereNull('expires_at') ->orWhere('expires_at', '>', now()); }); } }