'boolean', ]; public function scopeApproved($query) { return $query->where('is_approved', true); } public function commentable(): MorphTo { return $this->morphTo(); } public function commentator(): BelongsTo { return $this->belongsTo($this->getAuthModelName(), 'user_id'); } public function approve() { $this->update([ 'is_approved' => true, ]); return $this; } public function disapprove() { $this->update([ 'is_approved' => false, ]); return $this; } protected function getAuthModelName() { if (config('comments.user_model')) { return config('comments.user_model'); } if (! is_null(config('auth.providers.users.model'))) { return config('auth.providers.users.model'); } throw new Exception('Could not determine the commentator model name.'); } }