如何从laravel中的关系中获取对象
Posted
技术标签:
【中文标题】如何从laravel中的关系中获取对象【英文标题】:how to get objects from relation of relation in laravel 【发布时间】:2019-04-23 17:19:20 【问题描述】:我有 3 个模型:课程、小组、学生
我想为 Course 中的游戏提供 2 个关系。
例如:我想要课程 1 (id=1) 的学生
课程有很多组(5,6,8),每个组有一个(36,38)或很多(35,37)个学生
如何让课程的所有学生都具有关系和口才
【问题讨论】:
您好,欢迎来到 ***。请花一些时间阅读帮助页面,尤其是名为"What topics can I ask about here?" 和"What types of questions should I avoid asking?" 的部分。更重要的是,请阅读the Stack Overflow question checklist。您可能还想了解Minimal, Complete, and Verifiable Examples。 【参考方案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 的选择会更好。
【讨论】:
以上是关于如何从laravel中的关系中获取对象的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Laravel 中的 hasMany() 关系中获取所有结果?