我的控制器包含查询:
$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。
答案 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');
}