'boolean', 'is_pinned' => 'boolean', 'last_post_at' => 'datetime', ]; public function category(): BelongsTo { return $this->belongsTo(ForumCategory::class, 'category_id'); } public function user(): BelongsTo { return $this->belongsTo(User::class, 'user_id'); } public function posts(): HasMany { return $this->hasMany(ForumPost::class, 'thread_id'); } public function scopeVisible(Builder $query): Builder { return $query->where('visibility', 'public'); } public function scopePinned(Builder $query): Builder { return $query->where('is_pinned', true); } public function scopeRecent(Builder $query): Builder { return $query->orderByDesc('last_post_at')->orderByDesc('id'); } public function scopeInCategory(Builder $query, int $categoryId): Builder { return $query->where('category_id', $categoryId); } }