【问题标题】:how to get objects from relation of relation in laravel如何从laravel中的关系中获取对象
【发布时间】:2019-04-23 17:19:20
【问题描述】:

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

我想为 Course 中的游戏提供 2 个关系。

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

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

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

【问题讨论】:

标签: laravel laravel-5 eloquent relationship eloquent-relationship


【解决方案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

【讨论】:

  • 很好...在这种情况下,我们不能使用 where 子句来表示中间关系(此处:组)?...例如:从组 where round=4 获取游戏?
【解决方案2】:

如果您只需要游戏:

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

【讨论】:

    猜你喜欢
    • 2021-05-23
    • 1970-01-01
    • 2019-10-17
    • 2021-09-11
    • 1970-01-01
    • 2016-07-20
    • 2017-12-19
    • 1970-01-01
    • 2021-01-20
    相关资源
    最近更新 更多