$children * @property-read int|null $children_count * @property-read Forum|null $parent * @property-read \Illuminate\Database\Eloquent\Collection $threads * @property-read int|null $threads_count * @method static \Illuminate\Database\Eloquent\Builder|Forum newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|Forum newQuery() * @method static \Illuminate\Database\Eloquent\Builder|Forum query() * @method static \Illuminate\Database\Eloquent\Builder|Forum whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|Forum whereDescription($value) * @method static \Illuminate\Database\Eloquent\Builder|Forum whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|Forum whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|Forum whereParentId($value) * @method static \Illuminate\Database\Eloquent\Builder|Forum wherePosition($value) * @method static \Illuminate\Database\Eloquent\Builder|Forum whereType($value) * @method static \Illuminate\Database\Eloquent\Builder|Forum whereUpdatedAt($value) * @mixin \Eloquent */ class Forum extends Model { use SoftDeletes; protected $fillable = [ 'name', 'description', 'type', 'parent_id', 'position', ]; public function parent(): BelongsTo { return $this->belongsTo(self::class, 'parent_id'); } public function children(): HasMany { return $this->hasMany(self::class, 'parent_id')->orderBy('position'); } public function threads(): HasMany { return $this->hasMany(Thread::class); } public function posts(): HasManyThrough { return $this->hasManyThrough(Post::class, Thread::class, 'forum_id', 'thread_id'); } public function latestThread(): HasOne { return $this->hasOne(Thread::class)->latestOfMany(); } public function latestPost(): HasOneThrough { return $this->hasOneThrough(Post::class, Thread::class, 'forum_id', 'thread_id') ->latestOfMany(); } }