通过与laravel的关系,在其他表的帮助下从表中排序数据?

时间:2016-10-30 18:49:49

标签: laravel

我的控制器包含查询:

$Comments = Comment::orderBy('id_parent', 'asc')->get();

我有评论模型:

class comment extends Model
{
    public function user()
    {
        return $this->belongsTo('App\User');
    }
    public function votes()
    {
        return $this->hasMany('App\Vote', 'comment_id', 'id_comment');
    }
}

我想检索以特定方式排序的评论数据,每个评论都有多个不同用户投票的投票,因此计数('投票')是每个评论的投票数。问题是我不知道如何调用模型中的特定投票功能,以便它可以计算列投票并将其命令为asc或desc。

最后,我可以按照总票数排序$ Comments。

2 个答案:

答案 0 :(得分:1)

您可以尝试:

$Comments = Comment::withCount('votes')->orderBy('votes_count', 'asc')->get();
当您想要计算关系中的结果数而不实际加载它们时会使用

withCount()方法,这会在结果模型上放置{relation}_count列。

答案 1 :(得分:0)

使用sortBy:

$comments=Comment::with('votes')->get()->sortBydesc('votes');
foreach($comments as $comment)
{
   echo $comment->votes->count('vote');
}