'datetime', 'password' => 'hashed', ]; // Relationships public function videos() { return $this->hasMany(Video::class); } public function likes() { return $this->belongsToMany(Video::class, 'video_likes')->withTimestamps(); } public function views() { return $this->belongsToMany(Video::class, 'video_views')->withTimestamps(); } public function comments() { return $this->hasMany(Comment::class); } public function getAvatarUrlAttribute() { if ($this->avatar) { return asset('storage/avatars/' . $this->avatar); } return 'https://i.pravatar.cc/150?u=' . $this->id; } // Role helper methods public function isSuperAdmin() { return $this->role === 'super_admin'; } public function isAdmin() { return in_array($this->role, ['admin', 'super_admin']); } public function isUser() { return $this->role === 'user' || $this->role === null; } // Placeholder for subscriber count (would need a separate table in full implementation) public function getSubscriberCountAttribute() { // For now, return a placeholder - in production this would come from a subscriptions table return rand(100, 10000); } }