在标签列表上按avg排序

时间:2017-08-23 22:04:04

标签: laravel laravel-5.4

我的网站上有一个标记系统,点击标记会将您带到与该标记关联的击球手相关的列表。我想订购这些击球手的平均评分,这些评分是由评论过的用户给出的。我该怎么做?

我的桌子:

  • 击球手:id,name,Country_id,
  • 评论:id,评分,评论
  • tag:id,tagname
  • Batsmen_tag:batsmen_id,Tag_id(多对多表)

目前我只是在我的控制器中找到标签($ id)并使用带有关系的foreach带回与该标签相关的击球手,例如

@foreach($tag->batsmen as $tags)

@endforeach

1 个答案:

答案 0 :(得分:1)

$batsmen = $batsmen->each( function ($item, $key) {
    $item->average_rating = $item->reviews->avg('rating');
});

$sorted = $batsmen->sortBy('average_rating');