'array', 'expires_at' => 'datetime', 'revoked_at' => 'datetime', 'usage_limit' => 'integer', 'usage_count' => 'integer', ]; public function event(): BelongsTo { return $this->belongsTo(Event::class); } public function creator(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } public function isActive(): bool { if ($this->revoked_at !== null) { return false; } if ($this->expires_at !== null && $this->expires_at->isPast()) { return false; } if ($this->usage_limit !== null && $this->usage_count >= $this->usage_limit) { return false; } return true; } }