Eloquent Laravel,订单评论,其中有更多的选票

时间:2016-05-22 23:30:22

标签: php mysql laravel eloquent

所以我有一个评论的帖子,而且一切都很好,我甚至有一个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);

0 个答案:

没有答案