'integer', 'user_id' => 'integer', 'parent_id' => 'integer', 'is_approved' => 'boolean', 'created_at' => 'datetime', 'updated_at' => 'datetime', 'deleted_at' => 'datetime', ]; public function story(): BelongsTo { return $this->belongsTo(Story::class, 'story_id'); } public function user(): BelongsTo { return $this->belongsTo(User::class, 'user_id'); } public function parent(): BelongsTo { return $this->belongsTo(self::class, 'parent_id'); } public function replies(): HasMany { return $this->hasMany(self::class, 'parent_id')->orderBy('created_at'); } public function approvedReplies(): HasMany { return $this->replies()->where('is_approved', true)->whereNull('deleted_at')->with(['user.profile', 'approvedReplies']); } }