我有 3 个模型:课程、小组、学生
我想给具有 2 个关系的课程的游戏。
例如:我想要课程 1 的学生 (id=1)
该课程有很多组(5,6,8),每个组有一个(36,38)或很多(35,37)名学生
如何让所有课程的学生都具有关系和口才
我有 3 个模型:课程、小组、学生
我想给具有 2 个关系的课程的游戏。
例如:我想要课程 1 的学生 (id=1)
该课程有很多组(5,6,8),每个组有一个(36,38)或很多(35,37)名学生
如何让所有课程的学生都具有关系和口才
您可以使用hasManyThrough
public function games()
{
return $this->hasManyThrough(Tournament::class, Group::class);
}
“has-many-through”关系为通过中间关系访问远距离关系提供了便捷的捷径。例如,一个 Country 模型可能通过一个中间 User 模型有许多 Post 模型。在此示例中,您可以轻松收集给定国家/地区的所有博客文章。
https://laravel.com/docs/5.7/eloquent-relationships#has-many-through
如果您只需要游戏:
$games = Game::with(['some_relation_name', 'some_relation_name_2'])
->whereHas('group', function($query) {
$query->whereHas('tournament', function($query) {
$query->where('id', 1)
});
})
->get();
如果您需要有比赛的锦标赛,那么 Anar 的选择会更好。