70 lines
1.3 KiB
PHP
70 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace App\Models\Core;
|
|
|
|
use Exception;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use App\Traits\Model\HasComments;
|
|
|
|
class Comment extends Model
|
|
{
|
|
use HasComments;
|
|
|
|
protected $fillable = [
|
|
'comment',
|
|
'user_id',
|
|
'is_approved'
|
|
];
|
|
|
|
protected $casts = [
|
|
'is_approved' => 'boolean'
|
|
];
|
|
|
|
public function scopeApproved($query)
|
|
{
|
|
return $query->where('is_approved', true);
|
|
}
|
|
|
|
public function commentable()
|
|
{
|
|
return $this->morphTo();
|
|
}
|
|
|
|
public function commentator()
|
|
{
|
|
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.');
|
|
}
|
|
|
|
}
|