所以我有一个评论的帖子,而且一切都很好,我甚至有一个upvote和downvote评论功能,它返回总票数(例如,如果它有20个upvotes和10个downvotes它说+10当你盘旋在它表示它有+20支票和-10支票。
但是我想订购帖子的评论,其中一个人有更多的赞成。
我不知道如何做到这一点因为关系就是这样。
PostController.php:
public function index($category_slug, $subcategory_slug, $post_slug)
{
return view('pages.forum-post', [
'post' => Post::With(
'user',
'user.userprofile',
'comments',
'comments.user',
'comments.upvotes',
'comments.downvotes',
'comments.user.userprofile'
)->whereSlug($post_slug)->firstOrFail()
]);
}
评论模特:
protected $appends = array('votecount');
public function upvotes()
{
return $this->morphMany('App\Models\General\Upvotes', 'commentable');
}
public function downvotes()
{
return $this->morphMany('App\Models\General\Downvotes', 'commentable');
}
public function comments()
{
return $this->morphMany('App\Models\General\Comments', 'commentable');
}
public function getVotecountAttribute()
{
$upVoteTotal = $this->upvotes->count();
$DownVoteTotal = $this->downvotes->count();
$voteTotal = $upVoteTotal - $DownVoteTotal;
return $voteTotal;
}
所以我最终在评论表中创建了一个名为total_votes的新字段,并使其成为一个int。然后,当用户投票或投票时,我将其递增或递减 -
Comments::find($data['comment_id'])->decrement('vote_total', 1);