laravel - 如何使用嵌套的 Eager Loading 获取相关数据
问题描述
我正在使用三个模型,锦标赛、玩家和结果。我正在尝试获得每个锦标赛的结果以及他们在本次锦标赛中的结果,但是,我得到的是这个,有玩家的锦标赛以及他们在所有锦标赛中的结果。Tournament 和 Player 具有多对多的关系。
比赛模型
public function players()
{
return $this->belongsToMany(Player::class)->withTimestamps();
}
播放器模型
public function playerTournamentResult()
{
return $this->hasMany(Result::class);
}
我在打电话
public function getActiveTournamentsWithResult(): Collection
{
return Tournament::with('players.playerTournamentResult')->where('status', true)->get();
}
这是结果表
id | tournament_id | player_id
解决方案
您将获得来自不同锦标赛的所有结果,因为玩家hasMany
模型中的关系正在获得所有结果,这解释了您的查询结果。
你像这样使用它:
public function getActiveTournamentsWithResult(): Collection
{
$tournament = Tournament::where('status',true)->get();
Result::where('tournament_id',$tournament->id)->get();
}
推荐阅读
- java - 如何解决 Kafka 代理中的网络和内存问题?
- javascript - 具有后台同步的 PWA,当互联网可用时,如何处理在向服务器发出请求时出现的错误?
- c# - 将数组向左移动时数字不会跟随
- arrays - SAS:计算按年份分组的滚动 5 个月销售平均值
- kubernetes - 如何将容器卷(非 root 用户)挂载到 Kubernetes 主机上的 root 用户?
- mysql - 使用函数生成的 MySQL 视图使我的应用程序崩溃
- python - 循环excel文件并基于Python中的一个常见列合并
- asp.net - 具有重复的 assemblyIdentity 的dependentAssembly,在这种情况下它将如何处理?
- vba - Powerpoint VBA - 如何修改代码以正确循环?
- sql - 基于多键/多列的反连接(SQL)