在Eloquent中获取相关模型列中最常见的值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Eloquent中获取相关模型列中最常见的值相关的知识,希望对你有一定的参考价值。
我正在使用Eloquent ORM,我试图找出俱乐部最成功的运动,基于比赛的胜利。
我有表clubs
,tournaments
,sports
和tournament_results
,每个表都有一个模型(Club
,Tournament
,Sports
,TournamentResult
)的关系。我表中的相关列:
clubs
,tournaments
,sports
每个包含id
,name
tournament_results
:id
,tournament
,club
,place
。
关系:
Club
与HasMany
有ClubResults
TournamentResult
有BelongsTo
与Tournament
和BelongsTo
与Club
Tournament
有HasMany
与TournamentResults
和BelongsTo
与Sport
Sport
与HasMany
有Tournament
我有关于获得我想要的结果的想法是这样的:
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 获取用户相关的建筑物