*/ use HasFactory, Notifiable, Friendable; /** * The attributes that are mass assignable. * * @var list */ protected $fillable = [ 'name', 'slug', 'email', 'password', ]; /** * The attributes that should be hidden for serialization. * * @var list */ protected $hidden = [ 'password', 'remember_token', ]; /** * Get the attributes that should be cast. * * @return array */ protected $casts = [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; protected static function boot(): void { parent::boot(); static::creating(function ($user) { $user->slug = Str::slug($user->name); }); static::updating(function ($user) { if ($user->isDirty('name')) { $user->slug = Str::slug($user->name); } }); static::created(function ($user) { // Create default lists $defaultLists = [ ['name' => 'Played Games', 'is_default' => true], ['name' => 'Want to Play', 'is_default' => true] ]; foreach ($defaultLists as $list) { $user->lists()->create($list); } }); } public function getRouteKeyName() { return 'slug'; } public function reviews(): HasMany { return $this->hasMany(Review::class); } public function ratings(): HasMany { return $this->hasMany(Rating::class); } public function lists() { return $this->hasMany(GameList::class); } /** * Get the forum threads created by the user. */ public function forumThreads() { return $this->hasMany(ForumThread::class); } /** * Get the forum topics created by the user. */ public function forumTopics() { return $this->hasMany(ForumTopic::class); } /** * Get the forum posts created by the user. */ public function forumPosts() { return $this->hasMany(ForumPost::class); } }