feat: add rating and comement #2

Merged
Amirmahdi merged 3 commits from rating/music into main 2026-05-21 05:15:47 +00:00
2 changed files with 2 additions and 33 deletions
Showing only changes of commit 02448db346 - Show all commits
+2 -2
View File
@@ -321,7 +321,7 @@ public function filters(Request $request)
public function show($id) public function show($id)
{ {
$media = Media::with(['image', 'category', 'myNote', 'tags' ,'comments']) $media = Media::with(['image', 'category', 'myNote', 'tags'])
->where('id', $id) ->where('id', $id)
->where(function($query) { ->where(function($query) {
$query->where('visibility', 'public') $query->where('visibility', 'public')
@@ -348,7 +348,7 @@ public function show($id)
'is_premium' => $media->is_premium, 'is_premium' => $media->is_premium,
'comments' => $media->comments, 'comments' => $media->comments,
'average_rating' => $media->average_rating, 'average_rating' => $media->average_rating,
'your_rating' => $media->user_rating, 'user_rating' => $media->user_rating,
'comments_count' => $media->comments()->count(), 'comments_count' => $media->comments()->count(),
]); ]);
} }
-31
View File
@@ -45,37 +45,6 @@ public function tags(): BelongsToMany
protected $appends = ['url', 'image_url' , 'average_rating', 'user_rating', 'comments_count']; protected $appends = ['url', 'image_url' , 'average_rating', 'user_rating', 'comments_count'];
// New rating and comment relationships
public function ratings(): MorphMany
{
return $this->morphMany(Rating::class, 'rateable');
}
public function comments(): MorphMany
{
return $this->morphMany(Comment::class, 'commentable');
}
// Accessors for ratings
public function getAverageRatingAttribute(): float
{
return round($this->ratings()->avg('stars'), 1);
}
public function getUserRatingAttribute(): ?int
{
if (!auth()->check()) return null;
return $this->ratings()
->where('user_id', auth()->id())
->value('stars');
}
public function getCommentsCountAttribute(): int
{
return $this->comments()->count();
}
// Accessor for full URL
public function getUrlAttribute() public function getUrlAttribute()
{ {
return asset('storage/' . $this->file_path); return asset('storage/' . $this->file_path);