0

我有 3 个模型:课程、小组、学生

我想给具有 2 个关系的课程的游戏。

例如:我想要课程 1 的学生 (id=1)

该课程有很多组(5,6,8),每个组有一个(36,38)或很多(35,37)名学生

如何让所有课程的学生都具有关系和口才

4

2 回答 2

1

您可以使用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

于 2018-11-21T07:27:45.300 回答
0

如果您只需要游戏:

$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 的选择会更好。

于 2018-11-21T07:29:19.647 回答