在Eloquent中获取相关模型列中最常见的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Eloquent中获取相关模型列中最常见的值相关的知识,希望对你有一定的参考价值。

我正在使用Eloquent ORM,我试图找出俱乐部最成功的运动,基于比赛的胜利。 我有表clubstournamentssportstournament_results,每个表都有一个模型(ClubTournamentSportsTournamentResult)的关系。我表中的相关列: clubstournamentssports每个包含idname tournament_resultsidtournamentclubplace

关系: ClubHasManyClubResults TournamentResultBelongsToTournamentBelongsToClub TournamentHasManyTournamentResultsBelongsToSport SportHasManyTournament

我有关于获得我想要的结果的想法是这样的: Club -> TournamentResults -> where place = 1 -> Tournaments -> get n (e.g. 3) most common sports in this set

到目前为止我所拥有的是:

$club = Club::findOrFail($id);
$club->tournamentResults()->where('place', 1)->with('tournament.sport');

但现在我不知道如何继续。有人可以帮我找到解决方案吗?

答案

将此关系添加到Club模型:

public function wonTournaments() {
    return $this->belongsToMany(Tournament::class, 'tournament_results')
        ->wherePivot('place', 1);
}

然后你可以这样做:

$topSport = $club->wonTournaments->groupBy('sport_id')
    ->sortByDesc(function($tournaments) {
        return $tournaments->count();
    })
    ->first()->first()->sport;

以上是关于在Eloquent中获取相关模型列中最常见的值的主要内容,如果未能解决你的问题,请参考以下文章

蟒蛇,熊猫;按列中最常见的值对 Dataframe 行进行排序

在用户模型 eloquent 中使用 whereHas 获取用户相关的建筑物

相关模型 eloquent laravel 中的自定义查询

Laravel + Vue JS:从数据库中获取/存储 Eloquent 模型的值

Laravel Eloquent在相关模型上按范围获取模型

获取 Arraylist 中最常见的元素