File: //home/armgroup/libs/app/Models/Comment.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Comment extends Model
{
use HasFactory;
protected $guarded = ['id'];
protected $casts = [
'positive_points' => 'array',
'negative_points' => 'array',
];
public const STATUS_NOT_SPECIFIED = 0;
public const STATUS_APPROVED = 1;
public const STATUS_NOT_APPROVED = 2;
public const STATUS_TRANSLATE = ['Not specified', 'Approved', 'Not approved'];
public const STATUS_COLOR = ['secondary', 'success', 'danger'];
public const TYPE = [
[
'name' => 'بلاگ',
'show-name' => 'مطلب',
'slug' => 'Article',
'className' => Article::class,
],
// [
// 'name' => 'صفحات',
// 'show-name' => 'صفحه',
// 'slug' => 'Page',
// 'className' => Page::class,
// ],
[
'name' => 'محصولات',
'show-name' => 'محصول',
'slug' => 'Product',
'className' => Product::class,
],
];
public function getAvatarAttribute()
{
return asset('images/defaults/user.png');
}
public function getMiniAvatarAttribute()
{
return asset('images/defaults/user.png');
}
public function commentable()
{
return $this->morphTo();
}
public function user()
{
return $this->belongsTo(User::class);
}
public function children()
{
return $this->hasMany(Comment::class, 'parent_id');
}
public function activeChildren()
{
return $this->hasMany(Comment::class, 'parent_id')->where('status', self::STATUS_APPROVED);
}
public function parent()
{
return $this->belongsTo(Comment::class, 'parent_id');
}
public function getCommentType()
{
return collect(self::TYPE)->firstWhere('className', $this->commentable_type);
}
public function feedback()
{
return $this->morphMany(Feedback::class, 'feedbackable');
}
public function scores()
{
return $this->morphMany(Score::class, 'scorable');
}
}